Die Spracherkennung ist eine wichtige Funktion in verschiedenen Anwendungen, wie z. B. Hausautomation, künstliche Intelligenz usw. Dieser Artikel enthält eine Einführung in die Verwendung der SpeechRecognition-Bibliothek von Python. Dies ist nützlich, da es mit Hilfe eines externen Mikrofons auf Mikrocontrollern wie Raspberri Pis verwendet werden kann.

Erforderliche Installationen

Folgendes muss installiert sein:

  1. Python-Spracherkennungsmodul:
     sudo pip install SpeechRecognition 
  2. PyAudio: Verwenden Sie den folgenden Befehl für Linux-Benutzer
    sudo apt-get install python-pyaudio python3-pyaudio

    Wenn die Versionen in den Repositorys zu alt sind, installieren Sie pyaudio mit dem folgenden Befehl

    sudo apt-get install portaudio19-dev python-all-dev python3-all-dev &&
    sudo pip install pyaudio

    Verwenden Sie pip3 anstelle von pip für python3.
    Windows-Benutzer können pyaudio installieren, indem sie den folgenden Befehl in einem Terminal ausführen



    pip install pyaudio

Spracheingabe mit einem Mikrofon und Übersetzung von Sprache in Text

  1. Mikrofon konfigurieren (für externe Mikrofone): Es wird empfohlen, das Mikrofon während des Programms anzugeben, um Störungen zu vermeiden.
    Geben Sie lsusb im Terminal. Eine Liste der angeschlossenen Geräte wird angezeigt. Der Mikrofonname würde so aussehen
    USB-Gerät 0x46d: 0x825: Audio (hw: 1, 0)

    Notieren Sie sich dies, da es im Programm verwendet wird.

  2. Festlegen der Blockgröße: Hierbei wurde im Wesentlichen angegeben, wie viele Datenbytes gleichzeitig gelesen werden sollen. Normalerweise wird dieser Wert in Potenzen von 2 angegeben, z. B. 1024 oder 2048
  3. Abtastrate einstellen: Die Abtastrate definiert, wie oft Werte zur Verarbeitung aufgezeichnet werden
  4. Geräte-ID auf das ausgewählte Mikrofon einstellen : In diesem Schritt geben wir die Geräte-ID des Mikrofons an, das wir verwenden möchten, um Mehrdeutigkeiten bei mehreren Mikrofonen zu vermeiden. Dies hilft auch beim Debuggen in dem Sinne, dass wir beim Ausführen des Programms wissen, ob das angegebene Mikrofon erkannt wird. Während des Programms geben wir einen Parameter device_id an. Das Programm sagt, dass device_id nicht gefunden werden konnte, wenn das Mikrofon nicht erkannt wird.
  5. Anpassung für Umgebungsgeräusche zulassen: Da das Umgebungsgeräusch variiert, müssen wir dem Programm eine Sekunde oder auch Zeit geben, um die Energieschwelle der Aufzeichnung so anzupassen, dass sie entsprechend dem externen Geräuschpegel angepasst wird.
  6. Übersetzung von Sprache in Text: Dies erfolgt mithilfe der Google-Spracherkennung. Dies erfordert eine aktive Internetverbindung, um zu funktionieren. Es gibt jedoch bestimmte Offline-Erkennungssysteme wie PocketSphinx, die jedoch einen sehr strengen Installationsprozess aufweisen, der mehrere Abhängigkeiten erfordert. Die Google-Spracherkennung ist eine der am einfachsten zu verwendenden.
  7. Die obigen Schritte wurden unten implementiert:

    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

      
    import speech_recognition as sr
      
    mic_name = "USB Device 0x46d:0x825: Audio (hw:1, 0)"
    sample_rate = 48000
    chunk_size = 2048
    r = sr.Recognizer()
      
    mic_list = sr.Microphone.list_microphone_names()
      
    for i, microphone_name in enumerate(mic_list):
        if microphone_name == mic_name:
            device_id = i
      
    with sr.Microphone(device_index = device_id, sample_rate = sample_rate, 
                            chunk_size = chunk_size) as source:
        
        
        r.adjust_for_ambient_noise(source)
        print "Say Something"
        
        audio = r.listen(source)
              
        try:
            text = r.recognize_google(audio)
            print "you said: " + text
          
        
          
        except sr.UnknownValueError:
            print("Google Speech Recognition could not understand audio")
          
        except sr.RequestError as e:
            print("Could not request results from Google 
                                     Speech Recognition service; {0}".format(e))
    chevron_right
    
    
    filter_none
    
    

    Übertragen Sie eine Audiodatei in Text

    Wenn wir eine Audiodatei haben, die wir in Text übersetzen möchten, müssen wir einfach die Quelle durch die Audiodatei anstelle eines Mikrofons ersetzen.
    Legen Sie die Audiodatei und das Programm zur Vereinfachung im selben Ordner ab. Dies funktioniert für WAV, AIFF und FLAC-Dateien.
    Eine Implementierung wurde unten gezeigt

    filter_none

    bearbeiten
    schließen

    play_arrow

    Link
    Helligkeit_4
    Code

    import speech_recognition as sr
      
    AUDIO_FILE = ("example.wav")
      
      
    r = sr.Recognizer()
      
    with sr.AudioFile(AUDIO_FILE) as source:
        
        
        audio = r.record(source)  
      
    try:
        print("The audio file contains: " + r.recognize_google(audio))
      
    except sr.UnknownValueError:
        print("Google Speech Recognition could not understand audio")
      
    except sr.RequestError as e:
        print("Could not request results from Google Speech 
                  Recognition service; {0}".format(e))
    chevron_right
    
    
    filter_none
    
    

Fehlerbehebung

Die folgenden Probleme treten häufig auf

  1. Stummgeschaltetes Mikrofon: Dies führt dazu, dass keine Eingaben empfangen werden. Um dies zu überprüfen, können Sie alsamixer verwenden.
    Es kann mit installiert werden

    sudo apt-get install libasound2 alsa-utils alsa-oss

    Typ amixer . Die Ausgabe sieht ungefähr so ​​aus

    Einfache Mischersteuerung 'Master', 0
      Funktionen: pvolume pswitch pswitch-join
      Wiedergabekanäle: Vorne links - Vorne rechts
      Limits: Wiedergabe 0 - 65536
      Mono:
      Vorne links: Wiedergabe 41855 [64%] [Ein]
      Vorne rechts: Wiedergabe 65536 [100%] [Ein]
    Einfache Mischersteuerung 'Capture', 0
      Funktionen: cvolume cswitch cswitch-join
      Kanäle erfassen: Vorne links - Vorne rechts
      Grenzen: Erfassen Sie 0 - 65536
      Vorne links: Aufnahme 0 [0%] [aus] # ausgeschaltet
      Vorne rechts: Erfassen Sie 0 [0%] [aus]
    

    Wie Sie sehen können, ist das Aufnahmegerät derzeit ausgeschaltet. Um es einzuschalten, geben
    Sie alsamixer ein. Wie Sie im ersten Bild sehen können, werden unsere Wiedergabegeräte angezeigt . Drücken Sie F4, um zwischen Geräte erfassen umzuschalten.

    Im zweiten Bild zeigt der hervorgehobene Teil, dass das Aufnahmegerät stummgeschaltet ist. Drücken Sie die Leertaste, um die Stummschaltung aufzuheben

    Wie Sie im letzten Bild sehen können, bestätigt der hervorgehobene Teil, dass das Aufnahmegerät nicht stummgeschaltet ist.

  2. Aktuelles Mikrofon nicht als Aufnahmegerät ausgewählt:
    In diesem Fall kann das Mikrofon durch Eingabe von alsamixer und Auswahl von Soundkarten eingestellt werden. Hier können Sie das Standardmikrofon auswählen.
    Wie in der Abbildung gezeigt, müssen Sie im hervorgehobenen Bereich die Soundkarte auswählen.

    Das zweite Bild zeigt die Bildschirmauswahl für die Soundkarte

  3. Keine Internetverbindung: Für die Konvertierung von Sprache in Text ist eine aktive Internetverbindung erforderlich.

Dieser Artikel wurde von Deepak Srivatsav verfasst . Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel mit Contrib.geeksforgeeks.org schreiben oder Ihren Artikel an Contribute@geeksforgeeks.org senden . Sehen Sie sich Ihren Artikel auf der GeeksforGeeks-Hauptseite an und helfen Sie anderen Geeks.

Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder weitere Informationen zu dem oben diskutierten Thema teilen möchten.

Geeks-Digest-Img