Lassen Sie uns den englischen Sprachdialog in Python implementieren [offline]

Über Pocket Shinx

Pocketsphinx ist ein Modul, das die englische Spracherkennung offline ermöglicht. Klicken Sie hier, um zu erfahren, wie Pocketsphinx installiert und verwendet wird Die Umgebungskonstruktion wird auch auf dieser Seite bestätigt, daher ist es in Ordnung, sie zu überspringen (?)

Spracherkennung mit einem eindeutigen Wörterbuch (Speech to Text)

Umgebung

ubuntu 18.04 python3


Umgebung

Ich habe eine Probe in Git zusammengestellt, also klonen Sie sie bitte und verwenden Sie sie. "https://github.com/hir-osechi/pocketsphinx_sample"

python


git clone https://github.com/hir-osechi/pocketsphinx_sample.git

Dieser enthält den Code, der Pocketshinx und Svoxpico verwendet Wenn diese nicht installiert sind, gehen Sie wie folgt vor:

python


cd pocketsphinx_sample/
sh setup.sh

Wenn Sie an der Verwendung von svoxpico interessiert sind


Pocketshinx, für das nichts festgelegt werden muss, kann mit dem folgenden Code implementiert werden.

pocket_test.py


from pocketsphinx import LiveSpeech
for phrase in LiveSpeech():
    print(phrase) 

Von hier aus können Sie Optionen in den LiveSpeech () - Klammern hinzufügen. Wenn Sie Ihr eigenes Wörterbuch verwenden

lm = False dic = Pfad (.dict-Datei) des erstellten Originalwörterbuchs jsgf = Pfad (.gram-Datei) des erstellten Originalwörterbuchs

Hinzufügen.


Erstellen Sie Ihr eigenes Wörterbuch

Über Dict-Dateien

Pocketsphinx hat ein Wortwörterbuch namens ".dict", das Zehntausende von Wörtern und deren Äußerungen enthält.

Beispiel weather W EH DH ER were W ER what W AH T what(2) HH W AH T where W EH R where(2) HH W EH R

Alle Wörter werden in der Diktatdatei mit dem folgenden Pfad gespeichert. /usr/local/share/pocketsphinx/model/en-us/cmudict-en-us.dict

Standardmäßig wird in diesen Zehntausenden von Wörterbüchern nach erkannten Wörtern gesucht Wenn Sie die Anzahl der Wörter eingrenzen, verbessert sich die Erkennungsgenauigkeit.


Über Gramm-Datei

In der Grammdatei können Sie die Grammatik oder Grammatik angeben. Wenn Sie beispielsweise die folgende Grammdatei erstellen,

What food do you like ? Where do you live in ?

Nur die beiden Sätze von werden erkannt.

#JSGF V1.0;
grammar test;
public <rule> = <command>;
<command> = what food do you like | where do you live in;

Übrigens ist es mühsam, jedes Mal Diktat- und Grammdateien von Hand zu erstellen. Ich habe einen Code erstellt, der durch Eingabe von Sätzen automatisch eine Diktat- und Grammdatei erstellt. Es ist auf Git.

cd pocketsphinx_sample/tools
python3 gram_maker_by_input.py

Bitte geben Sie wie folgt ein.

Geben Sie den Namen des Wörterbuchs ein, das Sie erstellen möchten:test
Bitte geben Sie den Text ein+ Enter
(Strg zum Beenden-C)
===============================================================
do you like apple
i want to play tennis
please tell me the way to the kyoto station
let me know what i can do for you

Jetzt können Sie eine Spracherkennung durchführen, die nur auf 4 Sätze reagiert. Wenn dies jedoch unverändert bleibt, kann einem dieser vier Elemente sogar eine geringe Menge an Rauschen zugewiesen werden. Fügen Sie also Rauschen hinzu.

cd pocketsphinx_sample/tools
python3 gram_noise_changer.py

Bitte geben Sie wie folgt ein.

Geben Sie den Namen des Wörterbuchs ein, für das Sie das Rauschen ändern möchten:test
Bitte geben Sie den txt-Dateinamen des Rauschfelds 1 ein, das Sie ändern möchten(.txt nicht enthalten):noise_sample
===============================================================
Ändern Sie das Rauschen in diesem Wörterbuch.
===============================================================
Ende der Änderung
===============================================================

Wenn Sie neugierig sind, was Sie tun, schauen Sie sich test.gram an. (Lärm enthält Wörter, die leicht zu erkennen waren, wenn Sie nichts getan haben. Spielen Sie einfach mit ihnen herum.)

Damit ist die Vorbereitung abgeschlossen!


Lauf

Wenn Sie bestätigen können, dass nur der zuvor angegebene Satz vom folgenden Befehl erkannt wird, ist er erfolgreich.

cd pocketsphinx_sample/
python3 dic_test.py

Sprachdialog

Als Beispiel für die Verwendung haben wir ein Programm erstellt, mit dem Sie Fragen stellen und beantworten können. Der Fragentext und die Antwort werden durch "," getrennt und sind in bagsphinx_sample / dictionary / QandA / QandA.txt enthalten.

Führen Sie gram_maker_from_txt.py aus, um aus QandA.txt ein eigenes Wörterbuch zu erstellen.

cd pocketsphinx_sample/tools
python3 gram_maker_from_txt.py

Bitte geben Sie wie folgt ein.

Geben Sie den Namen des Wörterbuchs ein, das Sie erstellen möchten:QA_sample
Geben Sie den txt-Dateinamen ein, den Sie als Wörterbuch verwenden möchten(.txt nicht enthalten):QandA
Bitte geben Sie den txt-Dateinamen der Rauschspalte 1 ein, die Sie hinzufügen möchten(.txt nicht enthalten):noise_sample
Ende des Wörterbuchs

In diesem Fall sollten Sie in der Lage sein, eine Frage-Antwort-Sitzung zu implementieren.

cd pocketsphinx_sample/
python3 QA_test.py

Ausführungsergebnis ↓


[*] START RECOGNITION
----------------------------------
 are you happy ?
[*] SPEAK : yes
----------------------------------

[*] START RECOGNITION
----------------------------------
 what food do you like ?
[*] SPEAK : I like apples.
----------------------------------

Zur weiteren Verbesserung der Genauigkeit

Bei der Verbesserung der Erkennungsgenauigkeit sollte das Rauschen genau angegeben werden. Zum Beispiel, wenn "welches Essen Sie mögen" leicht falsch erkannt wird,

what what food what food do what food do you

Durch Addieren zu Noise_sample.txt können Sie die Ausgabe verhindern, sofern keine genaue Übereinstimmung vorliegt.


Offizielle Probe von Pocketsphinx "https://pypi.org/project/pocketsphinx/"

Recommended Posts

Lassen Sie uns den englischen Sprachdialog in Python implementieren [offline]
Implementieren Sie XENO mit Python
Implementieren Sie sum in Python
Implementieren Sie Traceroute in Python 3
Implementieren Sie Naive Bayes in Python 3.3
Implementieren Sie alte Chiffren in Python
Implementieren Sie Redis Mutex in Python
Implementieren Sie die Erweiterung in Python
Implementieren Sie schnelles RPC in Python
Implementieren Sie den Dijkstra-Algorithmus in Python
Implementieren Sie den Slack Chat Bot in Python
Lassen Sie uns das Umfangsverhältnis mit Python finden
Implementieren Sie das Stacking-Lernen in Python [Kaggle]
Implementieren Sie die Funktion power.prop.test von R in Python
Lassen Sie uns "Python -m Antigravitation" in Python ausführen
Versuchen wir es mit Fizz Buzz mit Python
Mal sehen, wie man Eingaben in Python verwendet
Implementieren Sie die REST-API schnell in Python
Lassen Sie uns die Stimme mit Python # 1 FFT analysieren
Implementieren Sie __eq__ usw. generisch in der Python-Klasse
Ich habe versucht, Permutation in Python zu implementieren
Implementieren Sie den FIR-Filter in Python und C.
Ich habe versucht, PLSA in Python 2 zu implementieren
Lassen Sie uns mit Python langsam sprechen
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, PPO in Python zu implementieren
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Versuchen Sie, Oni Mai Tsuji Miserable mit Python zu implementieren
Lassen Sie uns das Git-Commit-Protokoll in Python analysieren!
So implementieren Sie Shared Memory in Python (mmap.mmap)
Installieren Sie das Python-Paket in einer Offline-Umgebung
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
Das 18. Offline-Echtzeit-Schreibproblem in Python
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Lassen Sie uns einige Beispiele für die Benachrichtigungsverarbeitung in Python erstellen
[Implementierung zum Lernen] Implementieren Sie Stratified Sampling in Python (1)
Ich habe versucht, eine selektive Sortierung in Python zu implementieren
Implementieren Sie "Alles was Sie brauchen ist töten" in Python
Das 19. Offline-Echtzeit-Schreibproblem in Python
Implementieren Sie den PRML-Algorithmus in Python (fast nur Numpy)
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python