Skocz do zawartości

Generowanie mowy ludzkiej na Arduino?


Adder

Pomocna odpowiedź

Dzień dobry! Męczenia buzera ciąg dalszy. Podjąłem próbę zmuszenia go do wydawania dźwięków przypominających ludzką mowę. Niestety bezskutecznie. Implementacja biblioteki Talkie od Arduino daje w efekcie cichy chrobot. Natomiast TTS od Crane'a sprawia, że poszczególne słowa da się odróżnić, ale są całkowicie niezrozumiałe i również bardzo, bardzo ciche. Buzzer ewidentnie sobie z tym nie radzi. 🙄

Pytanie do eksperta: Czy podłączenie słuchawek w miejsce buzzera pozwoli na usłyszenie w nich symulacji mowy?

Innymi słowy, czy ciachać kabel słuchawek i iść tą drogą, czy lepiej zainwestować w głośnik ze wzmacniaczem?? 🤔🤔

Pomóżcie proszę. 

Link do komentarza
Share on other sites

@Adder buzzer z generatorem niestety nie nadaje się do tego typu eksperymentów. Szczerze mówiąc to nie wiem czy uda Ci się na Arduino wygenerować jakąś sensowną ludzką mowę, nigdy nawet nie próbowałem robić czegoś takiego. Może @ethanak coś podpowie? 😉

Link do komentarza
Share on other sites

Oczywiście - potrzebny jest buzzer bez generatora, ew. prosty wzmacniacz na jednym tranzystorze (szumnie zwany "wzmacniaczem klasy D"):

audio.thumb.png.8464dc667cb63c3cc313fd6f3e08ebdc.png

Da się wygenerować mowę, ale raczej jako odtworzenie jakiegoś tam sampla. Jednobitowy przetwornik będzie skrzypiał i trzeszczał, ale da się zrozumieć co mówi (wiele lat temu próbowałem tego na C16, dało się zrozumieć o co chodzi - ktoś pamięta A-07?).

Do zabawy w sigma-delta Arduino jest za słaby, ale np. ESP32 (nie próbowałem na ESP8266, ale podobno można osiągnąć całkiem ciekawe wyniki) już to potrafi. Co prawda nie jest to super jakość, ale np. dla syntezatora Klatta wystarczy.

Jeśli ktoś jest zainteresowany, mogę rozwinąć temat, ale to lepiej w oddzielnym wątku ( @Treker - możesz to wydzielić?)

PS. Tak, rezystor dobrany "na pałę", ale z takim i z takim dokładnie tranzystorem u mnie działa.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jak na klasę D (czy na sterowanie naprawdę szybkim sygnałem PWM) to brakuje mu diody lub czegoś innego, co zapewni przepływ prądu przez głośnik w czasie gdy tranzystor jest zatkany. A na klasę A (wtedy sterowanie sygnałem analogowym więc w przypadku bezDACowego Arduino - odfiltrowanym PWMem) brakuje obwodu polaryzacji bazy i ew. kondensatora separującego składową stałą.

Tak czy tak, mogłoby działać lepiej 🙂

W każdym razie wchodząc w eksperymenty z dźwiękiem, wobec i tak sporych prac programistycznych do wykonania, oszczędzanie na płyteczce wzmacniacza mocy i głośniku (komplet za 10zł?) wydaje się dziwne. Nawet najbardziej prymitywny moduł wzmacniacza (stary dobry LM386, jakiś TDAcośtam albo coś nowego w klasie D właśnie) i prosty, obudowany głośnik dają o niebo lepsze rezultaty niż dowolny bipczak czy sklecony z opornikiem tranzystor. Natomiast słuchawki odradzam.

  • Lubię! 2
Link do komentarza
Share on other sites

@marek1707 to jest Arduino, dwa kilo RAM, nie ma DMA, nie ma przetworników, nawet na sigma-delta przy min. 8kHz częstotliwości samplingu wątpię, czy by się wyrobił. Z diodą się zgadzam, ale żadna klasa A tu nie zda egzaminu (różnica będzie taka, że będzie cały czas żarł prąd zamiast tylko w czasie odtwarzania dźwięku). Oczywiście - można się bawić w PWM, grzebać w rejestrach. ale to trochę sprawa niewarta świeczki: za te same pieniądze można kupić jakąś płytkę typu ESP32, gdzie masz albo DAC-a na pokładzie (tu idealnie sprawdza się właśnie jakiś LM czy gotowa płytka wzmacniacza za dwa złote), albo robisz programowy sigma-delta, albo w ogóle podpinasz dekoder I2S i masz dźwięk jak trzeba.

Tyle, że to wszystko wymaga czegoś więcej, niż prosta zabawa nie wykraczająca poza kursy Arduino. Jestem w stanie napisać jakiś prosty jednobitowy "odotwarzacz" posługując się wyłącznie materiałem z kursów; wiem, że to nie wystarczy, bo sama ilość RAM-u nie pozwoli na więcej niż sekundę czegoś, co przy bardzo dużej dawce dobrej woli można nazwać "dźwiękiem". Ale jeśli kogoś to zainteresuje - sięgnie po mocniejszą płytkę, wzmacniacz, jakiś głośnik... Jeśli nie - nie da mu nic żadna komplikacja ani po stronie elektroniki, ani programu bo będzie wolał zająć się np. machaniem nogami heksapoda.

Może zróbmy inaczej: zajmiemy się obaj swoją działką. Ja napiszę coś do odtwarzania dźwięku, Ty pokażesz, jak nie wychodząc poza zestawy z forbotowych kursów elektroniki zrobić coś, co ów dźwięk będzie odtwarzać.

Co ty na to?

 

 

Link do komentarza
Share on other sites

Przyznam, że nie rozumiem - ani Twojej irytacji ani propozycji. Widzę schemat i piszę do niego komentarz. Można to zrobić lepiej - stąd moje uwagi. Jeśli ktoś ma chęć bawić się w dźwięk nawet na Arduino, to wyjście audio jest ważnym elementem. Dlaczego miałbym tego nie napisać? Mowa jest trudna? No to można zrobić wyjście PWM 8kHz, odfiltrować RC i zrobić syntezator np. muzyczny, niekoniecznie mowy i niekoniecznie odtwarzać próbki z rachitycznego RAMu czy FLASHa. 16MHz Arduino, nawet bez tych wszystkich wodotrysków, z kilkoma generatorami, ich mnożeniem czy sumowaniem i zrobieniem obwiedni w 125us sobie poradzi. A jeśli wyjście będzie spaprane, to nawet najlepsze chęci i umiejętności programistyczne nie pomogą - bedzie rzęziło albo pykało albo w ogóle nic. A skoro potrzebny jest jakiś wzmacniacz liniowy, to piszę co o tym myślę. Daleki jestem od pouczania Ciebie. Także nie bądź taki wyczulony, przecież to nie były uwagi czy zarzuty do Twojego schematu (bo wiem, że możesz zrobić to dowolnie dobrze) tylko wskazówki dla tych początkujących co to czytają. Jeśli któryś miałby ochotę na audio, to niech przygotuje sobie warsztat. Praca będzie milsza i nawet nie do końca dopracowany program będzie lepiej słychać (a także jego wady). To jak z narzędziami w garażu czy w kompie. Trzeba je sobie gromadzić/tworzyć, żeby praca była przyjemnością. Niech zamiast męczyć się z jednym tranzystorem i bipczakiem kupują wzmacniacze, podtykają głośniki i niech mają trochę radochy. Efekty mogą być zaskakująco dobre - jak na Arduino rzecz jasna.

A co do działki. Gdzie wytyczasz zatem granice "mojej"? Chciałbym wiedzieć, żeby czasem miedzy przez przypadek Ci nie zaorać.

I dlaczego mówimy o kursach i zestawach Forbotowych? Czy to jakieś założenie noworoczne, że elektronika na Forbocie nie wychodzi poza zestaw czterech oporników i diody LED?

Obaj mamy doświadczenie. Ja kiedyśtam zahaczyłem o projekty i budowę syntezatorów analogowych i cyfrowych, Ty także masz sporą wiedzę w tej dziedzinie. Ja dłubałem w tranzystorach, Ty pewnie jesteś w stanie zastąpić kilka wzmacniaczy operacyjnych jedną pętlą for. Wzajemny szacun, OK? (BTW: tak dawno nie używałem trójwymiarowych tablic w C, że w końcu byłem pewien, że dwa wymiary to max - dzięki 🙂 ) 

Weź mi odpisz coś miłego, bo od Świąt siedzę nad dużym projektem płyty pewnego superczułego detektora, szukam źródeł przesłuchów między kanałami, rower (i ja sam) po 50km jazdy wygląda jakbym go utopił i wyciągnął z bagna a dziś w nocy ze wschodu "nadchodzi bestia" - jak słyszałem w Faktach o 20.

Link do komentarza
Share on other sites

1 godzinę temu, marek1707 napisał:

Przyznam, że nie rozumiem - ani Twojej irytacji ani propozycji.

Chyba źle mnie zrozumiałeś - skąd przekonanie że się irytuję? Jeśli to dlatego, że to ja czegoś nie wiem, a powinienem 😞

A propozycja była prosta: pokazać, że nawet tymi najprostszymi środkami (czyli wiedzą o Arduino nie wykraczającą poza forbotowe kursy i zestawem "mały elektronik" czy jak to tam się nazywa) można coś osiągnąć. Może takie małe coś, ale coś innego, ciekawszego, wykraczającego poza typowe miganie ledami i ruszanie serwem. Może to coś będzie jedynie ciekawostką, która uświadomi, że można osiągnąć więcej, tylko trzeba się wziąć do nauki. I która może zachęci parę osób do pogłębienia wiedzy. Bo doskonale wiem, że Arduino potrafi więcej. Najprawdopodobniej Klatta uciągnie (jeśli 6502 potrafił...), a doklejenie jakiegoś covoxa otworzy całą gamę nowych możliwości...

Ale kto to ma pokazać? Sam stwierdziłeś, że obaj sroce spod ogona nie wypadliśmy...

I propozycja była jak najbardziej poważna - ja nawet przed chwilą spróbowałem pobawić się audacity i wygenerować coś zrozumiałego na jednym bicie 🙂

1 godzinę temu, marek1707 napisał:

Weź mi odpisz coś miłego

Hm... wyobraź sobie program na Arduino składający się z trzech głównych części (nieszczęsny reflektorek). Każde dwie kompilują się pięknie i działają. Próba połączenia trzech powoduje, że co prawda wszystko się pięknie kompiluje, ale Arduino nawet nie raczy wystartować tylko robi sobie reset. Ciekawe, dlaczego... to miał być program na jeden krótki dzień...

Wyobraź sobie coś takiego (prawdopodobnie uszkodzona płytka bo dość niedelikatnie się z nią obchodziłem, z pomyleniem biegunów zasilania włącznie), że program na ESP32 pięknie działa przy zasilaniu z USB, ale próba zasilania z Vin kończy się resetem przy włączeniu WiFi (objawy zresztą są bardzo ciekawe, ale zacznę od wymiany płytki na nową, wczoraj przyszły ale się reflektorkuję i nie mam czasu na nic innego).

O tym, że gdzieś posiałem wszystkie przewody męsko-męskie (tak koło setki) i kombinuję z jakimiś drucikami na stykówce nie wspomnę. I o efekcie pomylenia drucików tego samego koloru zakończonych dymem z wyświetlacza OLED (już wiem, że nie można mylić plusa z minusem).

Synek stwierdził, że będzie mieszkać z nami, zaanektował pokój gdzie stoi drukarka i nie wolno mu przeszkadzać bo albo prowadzi zajęcia albo pisze coś ważnego. Dzisiaj udało mi się wydrukować trzy uchwyty do cieniówek korzystając z tego że wyszedł na spacer (potrzebuję trzydzieści gdzieś za tydzień). A w domu poza tym pokojem nie mam gdzie tej maszynerii postawić bo to jednak trochę miejsca zajmuje, a przy tym lubi wydawać z siebie jakieś dziwne dźwięki.

A spacer... od października nie wychodziłem z domu (bo i po co?), siedzę przy kompie praktycznie cały dzień (bo niestety pracować też trzeba, na szczęście nie muszę być online na każde zawołanie), roweru to mogę jedynie pozazdrościć 😞 Zresztą... z moim sokolim wzrokiem to nawet bałbym się na toto wsiąść.

Wczoraj wieczorem chciałem sobie wypić piwo i obejrzeć odcinek serialu. Obudziłem się o czwartej, odcinek się skończył beze mnie a piwa nawet nie otworzyłem...

I nawet w chińczyka nie ma z kim zagrać 😞 A potem pretensje, że człowiek się irytuje...

Wystarczająco miłe? 🙂

 

 

 

Link do komentarza
Share on other sites

7 godzin temu, Treker napisał:

@Adder buzzer z generatorem niestety nie nadaje się do tego typu eksperymentów. Szczerze mówiąc to nie wiem czy uda Ci się na Arduino wygenerować jakąś sensowną ludzką mowę, nigdy nawet nie próbowałem robić czegoś takiego. Może @ethanak coś podpowie? 😉

Bardzo wszystkim dziękuję za pomoc. Odpowiedzi dały mi sporo do myślenia. Czuję jakbym pływał po powierzchni oceanu bez kapoka. 

Link do komentarza
Share on other sites

Każdy tak ma, bo każdy ma jakiś poziom kompetencji i na nim się utrzymuje jak na wodzie. Wszystko co poniżej jest łatwe (zanurkować zawsze można) a wszystko powyżej wygląda na trudne (bo podskoczyć z wody raczej ciężko). I zawsze tak będzie więc spoko, zdobywaj wiedzę, zadawaj pytania, próbuj i rób coraz fajniejsze rzeczy.

  • Lubię! 2
Link do komentarza
Share on other sites

9 godzin temu, marek1707 napisał:

Każdy tak ma, bo każdy ma jakiś poziom kompetencji i na nim się utrzymuje jak na wodzie. Wszystko co poniżej jest łatwe (zanurkować zawsze można) a wszystko powyżej wygląda na trudne (bo podskoczyć z wody raczej ciężko). I zawsze tak będzie więc spoko, zdobywaj wiedzę, zadawaj pytania, próbuj i rób coraz fajniejsze rzeczy.

Dziękuję za odpowiedź. Proszę, podpowiedz mi w co warto dzisiaj inwestować swój czas i pracę i pot😅 w obszarze elektroniki? AI, zabawki, video, dźwięk? A może coś innego?

Link do komentarza
Share on other sites

Dnia 7.01.2021 o 21:07, Adder napisał:

Proszę, podpowiedz mi w co warto dzisiaj inwestować swój czas i pracę i pot😅 w obszarze elektroniki

@Adder tak naprawdę to wszystko zależy od Ciebie, bo nie wiemy co Ciebie najbardziej interesuje. Jedni wybierają AI, przetwarzanie wideo i jeszcze inne cuda, a inni przez lata skupiają się na budowie niesamowitych projektów z samych bramek cyfrowych. Jeśli dopiero zaczynasz swoją przygodę z elektroniką to najlepiej chyba zapoznać się z szerokim spektrum dostępnych możliwości, a później skupić się na tych zagadnieniach, które zwyczajnie zainteresują Cię najbardziej.

  • Lubię! 2
Link do komentarza
Share on other sites

@Treker Tak, coś w tym jest co piszesz... 🙂 Ja nie rozpakowałem jeszcze pudełka z Kusem II dla początkujących, a zamierzam dokupić 2 czujniki odległości... Dziwnymi ścieżkami takie rzeczy podążają. Dzięki! Nawet nie wiesz ile twój kurs dostarczył mi czystej zabawy. 👍👍😀

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.