Spisu treści:

Rozpoznawanie mowy: 12 kroków
Rozpoznawanie mowy: 12 kroków

Wideo: Rozpoznawanie mowy: 12 kroków

Wideo: Rozpoznawanie mowy: 12 kroków
Wideo: 15.SFI / Rozpoznawanie Mowy / Bartosz Ziółko 2024, Lipiec
Anonim
Rozpoznawanie mowy
Rozpoznawanie mowy

Cześć wszystkim………

To moja druga instrukcja, którą publikuję

Więc witaj wszystkich…

W tym Instruktażu nauczę Cię, jak zbudować rozpoznawanie głosu za pomocą płyty arduino.

Myślę więc, że masz już wcześniej doświadczenie z płytkami arduino. Jeśli nie, to wcale nie jest to duży problem. Ale polecam się do tego przyzwyczaić, ponieważ jest bardzo ciekawie się nim bawić i tworzyć fajne projekty z niego zgodnie z twoją kreatywnością i wiedzą na ten temat.

Tak więc dla osób, które nie mają wcześniejszego doświadczenia w korzystaniu z arduino:

Arduino to sprzęt komputerowy o otwartym kodzie źródłowym, który jest produkowany przez firmę, która ma dużą społeczność projektantów i producentów. Można go traktować jak mały komputer, który może być używany do sterowania innymi obwodami elektronicznymi

Arduino jest zaprogramowane w stworzonym przez siebie środowisku, które można łatwo pobrać z ich strony internetowej

Krok 1: Jak skonfigurować środowisko?

Jak skonfigurować środowisko?
Jak skonfigurować środowisko?
Jak skonfigurować środowisko?
Jak skonfigurować środowisko?
Jak skonfigurować środowisko?
Jak skonfigurować środowisko?
Jak skonfigurować środowisko?
Jak skonfigurować środowisko?

Wystarczy wyszukać w google "pobierz arduino"

Kliknij "Arduino - oprogramowanie"

Będziesz mógł zobaczyć "Pobierz Arduino IDE"

Wybierz w zależności od systemu operacyjnego

Pobierz i zainstaluj

Czyli pomyślnie zainstalowałeś oprogramowanie i możesz napisać swój kod dla arduino i za pomocą kabla możesz podłączyć płytkę arduino do komputera i wstawić kod.

Krok 2: Dlaczego rośnie popyt na Arduino?

Niedrogi

Płytki Arduino są niedrogie w porównaniu z innymi platformami mikrokontrolerów. Będzie kosztować około 50 dolarów.

Wieloplatformowy

Oprogramowanie dla Arduino działa w systemach operacyjnych Windows, Macintosh OS i Linux. Jeśli pomyślimy o innych układach z mikrokontrolerem, będzie on działał tylko w Windowsie lub innymi słowy ograniczony tylko do okien.

Oprogramowanie typu open source i rozszerzalne

Oprogramowanie jest open source, dzięki czemu ludzie zaczęli się nad nim dogłębnie studiować i włączać biblioteki (zawierające zestaw funkcji do jego obsługi) innych języków programowania.

Proste i łatwe środowisko programowania

Korzystanie z Arduino IDE (oprogramowanie, o którym już mówiliśmy…) jest łatwe w użyciu dla osób, w tym początkujących, ponieważ duża ilość zasobów jest dostarczana przez samo Arduino, które jest dostępne w Internecie za darmo. o tym.

Open source i rozszerzalny sprzęt

Plany płytek Arduino są publikowane na licencji Creative Commons, dzięki czemu osoby mające doświadczenie w projektowaniu obwodów mogą tworzyć własną wersję modułu, mają też prawo do rozbudowy technologii i mogą ulepszać ją dodając do niej funkcje.

Krok 3: Zacznijmy !!!!

Powiedziałem już, że ten projekt skupia się głównie na rozpoznawaniu głosu za pomocą Arduino i umożliwieniu mu wykonywania niektórych zadań.

Mówiąc wyraźniej ……

Odbiera sygnały dźwiękowe dostarczane przez użytkownika, które można wykryć poprzez mruganie diody LED, po czym konwertowane są na syntezowaną mowę.

Krok 4: Wymagane komponenty

Wymagane komponenty
Wymagane komponenty
Wymagane komponenty
Wymagane komponenty
Wymagane komponenty
Wymagane komponenty

Główne komponenty wymagane do tego projektu to:

Arduino Due x 1

Mikrofon elektretowy Spark Fun x 1

Spark Fun Mono Amp Breakout x 1

Głośnik: 0,25 W, 8 omów x 1

Deska do krojenia chleba x 1

Dioda LED 5 mm: czerwona x 3

Rezystor 330 omów x 3

Przewody połączeniowe x 1

Lutownica x 1

Serwer BitVoicer

Jest to serwer rozpoznawania i syntezy mowy do automatyzacji mowy.

Krok 5: Jak to właściwie działa?

1. Wykrywane są fale dźwiękowe, a następnie przechwytują te fale i są wzmacniane przez płytkę Sparkfun Electret Breakout.

2. Wzmocniony sygnał uzyskany z powyższego procesu zostanie zdigitalizowany i buforowany/przechowywany na płytce Arduino za pomocą znajdującego się w niej przetwornika analogowo-cyfrowego (ADC).

3. Próbki audio zostaną dostarczone do BitVoicer Server przy użyciu obecnego portu szeregowego Arduino.

4. BitVoicer Server przetworzy strumień audio, a następnie rozpozna zawartą w nim mowę.

5. Rozpoznana mowa zostanie zmapowana do poleceń, które zostały już wcześniej przez siebie zdefiniowane, następnie zostanie odesłana z powrotem do Arduino. Jeśli jedno z poleceń polega na syntezie mowy, BitVoicer Server przygotuje strumień audio i wyśle go do Arduino.

6. Arduino zidentyfikuje dostarczone polecenia i wykona odpowiednią akcję. Jeśli zostanie odebrany strumień audio, zostanie on umieszczony w kolejce do klasy głośników BVS i odtwarzany za pomocą DUE DAC i DMA.

7. Wzmacniacz SparkFun Mono Audio Amplifier wzmocni sygnał DAC, dzięki czemu będzie mógł napędzać głośnik 8 Ohm i będzie słyszany przez niego.

Krok 6: Okablowanie komponentów

Podłączanie komponentów
Podłączanie komponentów
Podłączanie komponentów
Podłączanie komponentów

Pierwszym krokiem jest podłączenie różnych komponentów w płytce stykowej, a także z płytą arduino, jak pokazano na rysunku

Pamiętaj, że użyta tutaj płytka arduino to DUE, istnieją różne inne modele, które zostały wyprodukowane przez Arduino, z których każdy działa na różnych poziomach napięcia

Większość płyt Arduino pracuje na 5 V, ale DUE działa na 3,3 V

DUE używa już analogowego odniesienia 3,3 V, więc nie potrzebujesz zworki do pinu AREF

Och, przepraszam, zapomniałem powiedzieć, że pin AREF to „ANALOGOWY PIN REFERENCYJNY”, który jest obecny na płycie arduino, jak pokazano na następnym rysunku (jest to arduino UNO, ale jest podobny na podobnej stronie w przypadku DUE)

Pin AREF na DUE jest połączony z mikrokontrolerem przez mostek rezystorowy

Aby użyć pinu AREF, rezystor R1 musi zostać odlutowany od PCB [Printed Circuit Board]

Krok 7: Dostarczenie kodu do płyty Arduino

Dostarczanie kodu do płytki Arduino
Dostarczanie kodu do płytki Arduino

Musimy więc wgrać kod na płytkę Arduino, aby mógł działać w zależności od instrukcji zawartych w kodzie.

Bardzo łatwo to zrobić. Szczegółowo wyjaśnię każdemu z nich, czym się zajmują i jak działają.

Jak zainstalować bibliotekę?

Więc wcześniej musimy wiedzieć, jak zainstalować biblioteki BitVoicer Server w Arduino IDE,.to w oprogramowaniu arduino.

Więc w tym celu otwórz Arduino IDE

Na górnym panelu kliknij "Szkic"

Następnie kliknij „Dołącz bibliotekę”

Następnie kliknij „Zarządzaj biblioteką”

Następnie otworzy się menedżer bibliotek i zobaczymy listę bibliotek gotowych do instalacji lub już zainstalowanych

Wyszukaj bibliotekę do zainstalowania, a następnie wybierz numer wersji

Tutaj instalujemy biblioteki BitVoicer Server, które są niezbędne do tego projektu

Jak zaimportować bibliotekę.zip?

Biblioteki mogą być również dystrybuowane jako plik lub folder ZIP

Nazwa folderu to nazwa biblioteki

Wewnątrz folderu będzie plik.cpp, plik.h i często plik words.txt, folder przykładów i inne pliki wymagane przez bibliotekę

Od wersji 1.0.5 Arduino IDE można w nim zainstalować biblioteki innych firm

Nie rozpakuj pobranej biblioteki, pozostaw ją bez zmian

W tym celu przejdź do szkicu> Dołącz bibliotekę> Dodaj bibliotekę.zip

Wybierz lokalizację pliku.zip i otwórz go.

Wróć do menu Szkic > Importuj bibliotekę.

Jeśli jest poprawnie zaimportowany, ta biblioteka będzie widoczna na dole menu rozwijanego podczas nawigacji.

Krok 8: Program/Szkic

Jest to program, który należy wgrać do Arduino.

Można to zrobić po prostu podłączając płytkę Arduino do komputera i wgrywając ją na płytkę.

Krok 9: A co z napisanymi kodami?

Przyjrzyjmy się teraz, co tak naprawdę robi każda z funkcji zapisanych w kodzie ………..

Odniesienia do bibliotek i deklaracje zmiennych

Zanim o tym porozmawiamy, musimy znać i rozumieć kilka podstawowych terminologii. Obejmują one:

  • BVSP

    Jest to biblioteka, która daje nam prawie wszystkie zasoby potrzebne do wymiany informacji z serwerem BitVoicer

    Istnieje protokół znany jako BitVoicer Server Protocol, który jest implementowany przez klasę BVSP. Jest to wymagane do interakcji z serwerem

  • BVSMic

    Jest to biblioteka, która implementuje wszystkie rzeczy wymagane do nagrywania dźwięku za pomocą konwertera analogowo-cyfrowego (ADC) Arduino

    Ten dźwięk jest przechowywany w wewnętrznym buforze klasy i można go pobrać, a następnie wysłać do silników rozpoznawania mowy, które są dostępne na serwerze BitVoicer

  • BVSSpeaker

    Jest to biblioteka zawierająca wszystkie niezbędne zasoby wymagane do odtwarzania strumieni audio wysyłanych z serwera BitVoicer

    W tym celu płyta Arduino musi mieć wbudowany przetwornik cyfrowo-analogowy (DAC)

    Arduino DUE to jedyna płytka Arduino, która posiada zintegrowany przetwornik cyfrowo-analogowy

Biblioteki BVSP, BVSMic, BVSSpeaker i DAC, odniesienia do nich są zapisane w pierwszych czterech wierszach, które tworzą początek programu

Po zainstalowaniu BitVoicer Server możesz znaleźć BitSophia, który zapewnia wszystkie te cztery biblioteki

Gdy użytkownik doda odwołanie do biblioteki BVSSpeaker, automatycznie wywołana zostanie wspomniana wcześniej biblioteka DAC

Klasa BVSP służy do komunikacji z BitVoicer Server

Klasa BVSMic służy do przechwytywania i przechowywania dźwięku

Klasa BVSSpeaker służy do odtwarzania dźwięku za pomocą Arduino DUE DAC

2. funkcja konfiguracji

Funkcja konfiguracji służy do wykonywania określonych czynności, takich jak:

Aby ustawić tryby pinów i ich stany początkowe

Aby zainicjować komunikację szeregową

Aby zainicjować klasę BVSP

Aby zainicjować klasę BVSMic

Aby zainicjować klasę BVSSpeaker

Ustawia również „obsługę zdarzeń” (wskaźniki funkcji) dla zdarzeń frameReceived, modeChanged i streamReceived klasy BVSP

Krok 10: Funkcja pętli

Wykonuje pięć głównych operacji:

1. funkcja keepAlive()

Ta funkcja polega na zapytaniu serwera o informacje o stanie.

2. funkcja odbioru()

Ta funkcja ma na celu sprawdzenie, czy serwer wysłał jakieś dane, czy nie. Jeśli serwer wysłał jakiekolwiek dane, przetworzy je.

3. Funkcje isSREAvailable(), startRecording(), stopRecording() i sendStream()

Funkcje te służą do kontrolowania różnych ustawień nagrywania dźwięku, a po uzyskaniu dźwięku wyśle ten dźwięk do serwera BitVoicer.

4. Funkcja odtwarzania ()

Ta funkcja służy do odtwarzania dźwięku, który został umieszczony w kolejce w klasie BVSSpeaker.

5. odtwórzDalejLEDNote()

Ta funkcja służy do kontrolowania sposobu migania diody LED.

6. Funkcja BVSP_frameReceived

Ta funkcja jest wywoływana za każdym razem, gdy funkcja receive() zaczyna identyfikować, że odebrano jedną kompletną ramkę. Tutaj uruchamiamy polecenia uzyskane z serwera BitVoicer. Polecenia sterujące miganiem diod LED mają 2 bajty. W tym pierwszym bajcie wskazuje pin, a drugi bajt wskazuje wartość pinu. Tutaj używamy funkcji analogWrite(), aby ustawić odpowiednią wartość dla pinu. W tym czasie musimy również sprawdzić, czy otrzymano polecenie playLEDNotes, które jest typu Byte. Jeśli został odebrany, ustawiam playLEDNotes na true i będzie monitorować i oznaczać aktualny czas. Ten czas zostanie wykorzystany przez funkcję playNextLEDNote do synchronizacji diod LED z utworem.

7. BVSP_modeZmieniona funkcja

Ta funkcja jest wywoływana za każdym razem, gdy funkcja receive() identyfikuje zmianę trybu w kierunku wychodzącym (Server Arduino). BitVoicer Server może wysyłać dane lub dźwięk w ramkach do Arduino. Zanim komunikacja przejdzie z jednego trybu do drugiego, BitVoicer Server wysyła sygnał. Klasa BVSP identyfikuje ten sygnał i zgłasza lub flaguje zdarzenie modeChanged. W funkcji BVSP_modeChanged, jeśli użytkownik wykryje, że komunikacja przechodzi z trybu strumieniowego do trybu ramkowego, będzie wiedział, że dźwięk się zakończył, aby użytkownik mógł powiedzieć klasie BVSSpeaker, aby przestała odtwarzać dźwięk.

8. Funkcja BVSP_streamReceived

Ta funkcja jest wywoływana za każdym razem, gdy funkcja receive() identyfikuje, że próbki audio zostały odebrane. Po prostu pobiera dźwięk i umieszcza go w kolejce do klasy BVSSpeaker, aby funkcja play() mogła je odtworzyć.

9. Funkcja playNextLEDNote

Ta funkcja działa tylko wtedy, gdy funkcja BVSP_frameReceived identyfikuje polecenie playLEDNotes. Kontroluje i synchronizuje diody LED z dźwiękiem wysyłanym z BitVoicer Server. Aby zsynchronizować diody LED z dźwiękiem i poznać prawidłową synchronizację, można użyć bezpłatnego oprogramowania Sonic Visualizer. Pozwala nam oglądać fale dźwiękowe, dzięki czemu osoba może stwierdzić, kiedy został naciśnięty klawisz fortepianu.

Krok 11: Jak zaimportować obiekty rozwiązania BitVoicer Server?

Skonfigurowaliśmy BitVoicer Server do pracy z Arduino.

Istnieją cztery główne obiekty rozwiązania dla serwera BitVoicer: Lokalizacje, Urządzenia, BinaryData i Schematy głosowe.

Przyjrzyjmy się tym szczegółowo:

Lokalizacje

Reprezentuje fizyczną lokalizację, w której instalowane jest urządzenie.

Możemy stworzyć lokalizację o nazwie Dom.

Urządzenia

Są uważani za klientów BitVoicer Server.

Podobnie jak przy tworzeniu lokalizacji, możemy stworzyć urządzenie Mixed, dla ułatwienia nazwijmy je ArduinoDUE.

Czasami zdarzają się przepełnienia bufora, więc aby to wyeliminować musiałem ograniczyć Data Rate w ustawieniach komunikacji do 8000 próbek na sekundę.

BinaryData to rodzaj polecenia, które BitVoicer Server może wysłać do urządzeń klienckich. W rzeczywistości są to tablice bajtów, które można łączyć z poleceniami.

Gdy BitVoicer Server rozpozna mowę związaną z tym poleceniem, wysyła tablicę bajtów do urządzenia docelowego.

Z tego powodu utworzyłem jeden obiekt BinaryData dla każdej wartości pinu i nazwałem je ArduinoDUEGreenLedOn, ArduinoDUEGreenLedOff i tak dalej.

Musiałem więc stworzyć 18 obiektów BinaryData, więc proponuję pobrać i zaimportować obiekty z pliku VoiceSchema.sof, który znajduje się poniżej.

Czym więc jest schemat głosu?

Schematy głosowe to miejsce, w którym wszystko się łączy. ich główną rolą jest określenie, w jaki sposób zdania powinny być rozpoznawane i jakie polecenia muszą być wykonane.

Dla każdego zdania możesz zdefiniować tyle poleceń, ile potrzebujesz i kolejność ich wykonywania.

Możesz także zdefiniować opóźnienia między każdym z dostarczonych poleceń.

BitVoicer Server obsługuje tylko 8-bitowy dźwięk mono PCM (8000 próbek na sekundę), więc będzie trzeba przekonwertować plik audio do tego formatu, obecnie jest tak wiele opłat za konwersję online i polecam https://audio.online -convert.com/convert-to-wav.

Możesz zaimportować (Importowanie obiektów rozwiązania) wszystkie obiekty rozwiązania, których użyłem w tym projekcie z poniższych plików.

Jedna z nich zawiera urządzenie DUE, a druga zawiera schemat głosowy i jego polecenia.

Krok 12: Wniosek

Proszę bardzo !!!

Zrobiłeś niesamowity projekt i możesz z nim porozmawiać

Więc zacznij mówić………………

Możesz mrugać diodami LED i jednocześnie możesz powiedzieć, że śpiewa piosenkę, jeśli zajdzie taka potrzeba, jej kod został już dostarczony

Więc ukończyłem mój drugi instruktaż !!!!!!!!

Tak……

Myślę, że wszyscy to zrozumieli…

Jeśli ktoś ma jakieś pytania, proszę mnie zapytać

Następnym razem wymyślę doskonały Instruktaż…

Do widzenia…

Do zobaczenia wkrótce……………

Zalecana: