- Reikalingi komponentai
- Grandinės schema
- Garsiakalbio prijungimas prie „Arduino“
- „Arduino“ programavimas TTS (tekstas į kalbą)
Teksto į kalbą arba TTS sistema konvertuoja įprastą tekstą į kalbą. Ši technologija leidžia sistemai išsakyti tekstą žmogaus balsu. Yra daug teksto į kalbą konversijų pavyzdžių, tokių kaip pranešimai viešajame transporte, klientų aptarnavimo skambučiai, balso padėjėjai jūsų išmaniuosiuose telefonuose ar bet kurios mašinos naršymo meniu. TTS galite rasti net „Microsoft Word“, kur nustatėte, kad jis kalbėtų dokumente parašytą tekstą.
Šiandien šioje pamokoje sužinosime, kaip padaryti teksto į kalbą keitiklį naudojant „Arduino“. Anksčiau kalbėdami žadintuvu naudojome TTS su „Raspberry pi“, taip pat konvertuodavome kalbą į „aviečių pi“ tekstą naudodami „Google“ balso klaviatūrą.
Pirmas žingsnis TTS yra iš anksto apdorojimo arba normalizuoti. Šis žingsnis apima simbolių, skaičių ir santrumpų pavertimą žodžiais, kuriuos gali perskaityti tokios mašinos kaip „?“ bus paversti „klaustuku“.
Antrasis žingsnis yra susijęs su normalizuotas tekstą konvertuoti į fonemų ar fonetinių nuorašai. Fonemos yra mažos sakomų žodžių dalys, ty sakiniai yra garsai. Šis žingsnis yra tikrai būtinas, kad mašina galėtų kalbėti žodžiais taip, kaip žmonės.
Paskutinis žingsnis yra fonemų sintezė į sakytinį balso. Šį žingsnį galima pasiekti įvairiais metodais, pavyzdžiui, įrašant žmogaus balsą į skirtingus žodžius / frazes, arba sukuriant pagrindinius garso dažnius ir kaupiant juos kaip fonemas, arba nukopijuojant žmogaus kalbėjimo mechanizmą.
Reikalingi komponentai
- „Arduino“ lenta
- Garsiakalbis
- Stiprintuvo grandinė
- Reguliuojamas maitinimas
- Laidų sujungimas
Grandinės schema
Šiame teksto į kalbą keitiklyje mes panaudojome stiprintuvo grandinę, kad sumažintume triukšmą ir gautume aiškų garsą. Stiprintuvas grandinės yra pagamintas naudojant IC LM386. Jo schema parodyta žemiau:
100K puodas naudojamas garsui sureguliuoti. Sureguliuokite, kad gautumėte aiškų garsą. Jei kyla neaiškumų dėl šios grandinės, patikrinkite LM386 pagrįstą garso stiprintuvo grandinę. Jei neturite tikslios rezistorių ir kondensatorių vertės, naudokite artimą vertę.
Garsiakalbio prijungimas prie „Arduino“
Prijungus stiprintuvo grandinę, jungtys yra labai lengvos.
Prijunkite maitinimo šaltinį prie stiprintuvo grandinės ir prijunkite „Arduino“ skaitmeninį kaištį 3 prie 10K rezistoriaus ir prijunkite „Arduino“ įžeminimą prie grandinės įžeminimo. Dabar prijunkite garsiakalbį, prijungdami neigiamą gnybtą prie įžeminimo, o teigiamą - prie 220µF kondensatoriaus, ir prijunkite maitinimo šaltinį.
„Arduino“ programavimas TTS (tekstas į kalbą)
Šio „ Arduino“ pagrindo TTS programa taip pat yra labai lengva, nes tam yra biblioteka. Ši biblioteka vadinama „ Talkie“ ir ją gali pridėti bibliotekos valdytojas. Norėdami pridėti biblioteką, eikite į „ Sketch-> Include Library-> Mange Libraries“ .
Dabar bibliotekos tvarkyklė bus jūsų ekrane. Paieškos juostoje įveskite „Talkie“ ir spustelėkite mygtuką įdiegti. Biblioteka bus įdiegta.
Ši biblioteka yra labai patogu ir joje yra daugiau nei 1000 žodžių ir komandų. Jame yra keli pavyzdžiai, galite išbandyti visus, bet čia mes naudojame paprastą kodą, kad paaiškintume darbą.
Taip pat galite išbandyti kitas bibliotekoje pateiktas komandas. Norėdami gauti šias komandas, eikite į „ Documents \ Arduino“ bibliotekos „Talkie“ src ir atidarykite antraštės failus ir gaukite kelias komandas, kurias galima naudoti skirtingiems įspėjimams. Yra daugybė kitų TTS bibliotekų, tokių kaip „jscrane“ TTS biblioteka, „Google“ TTS biblioteka ir kt. Taip pat galite jas išbandyti.
Taigi pradėkime koduoti. Pirmiausia įtraukite keletą antraštės failų. „Talkie.h “ naudojama norint inicijuoti šią biblioteką ir nustatyti „Arduino“ skaitmeninį kaištį 3 kaip išvesties kaištį. „ Vocab_US_Large.h“ yra naudojamas mūsų naudojamiems įspėjimams naudoti, o „ Vocab_Special.h“ - mūsų pauzei naudoti.
#include "Talkie.h" #include "Vocab_US_Large.h" #include "Vocab_Special.h"
Dabar apibrėžkite objekto „vertę“, kad galėtumėte naudoti komandas:
Talkie balsas;
Čia tas pats pranešimas bus pakartotas garsiakalbyje, todėl nustatymo funkciją palikite tuščią ir komandas įdėkite į ciklo funkciją. Pirmoji komanda voice.say (spPAUSE2) turi padaryti trumpą pauzę kartodama įspėjimo pranešimą. Kitos komandos yra tik paprasti žodžiai, reiškiantys: PAVOJUS PAVOJUS VIRTA ŠIAURĖJE.
void setup () { } void loop () { voice.say (spPAUSE2); balsas.pasakyk (sp2_DANGER); balsas.pasakyk (sp2_DANGER); balsas.pasakyk (sp3_STORM); balsas.pasakyk (sp3_IN); balsas.pasakyk (sp3_THE); balsas.pasakyk (sp3_NORTH); }
Galiausiai įkelkite kodą į „Arduino“ ir prijunkite prie jo maitinimo šaltinį. Kai tik įjungsite grandinę, pradėsite girdėti perspėjimus! Jei negavote aiškaus garso, pabandykite sureguliuoti puodo rankenėlę arba patikrinkite, ar „Arduino“ maitina tinkamai, ir įsitikinkite, kad „Arduino“ GND yra prijungtas prie grandinės žemės.
Patikrinkite visą kodą su demonstraciniu vaizdo įrašu.