6.5 KiB
Sprache zu Text - Raspberry Pi
In diesem Teil der Lektion schreiben Sie Code, um Sprache aus dem aufgenommenen Audio in Text umzuwandeln, indem Sie den Sprachdienst verwenden.
Senden Sie das Audio an den Sprachdienst
Das Audio kann über die REST-API an den Sprachdienst gesendet werden. Um den Sprachdienst zu nutzen, müssen Sie zunächst ein Zugriffstoken anfordern und dieses dann verwenden, um auf die REST-API zuzugreifen. Diese Zugriffstoken laufen nach 10 Minuten ab, daher sollte Ihr Code sie regelmäßig anfordern, um sicherzustellen, dass sie immer aktuell sind.
Aufgabe - Zugriffstoken abrufen
-
Öffnen Sie das Projekt
smart-timer
auf Ihrem Raspberry Pi. -
Entfernen Sie die Funktion
play_audio
. Diese wird nicht mehr benötigt, da Sie nicht möchten, dass der Smart Timer Ihnen das Gesagte wiederholt. -
Fügen Sie die folgende Import-Anweisung oben in die Datei
app.py
ein:import requests
-
Fügen Sie den folgenden Code oberhalb der Schleife
while True
ein, um einige Einstellungen für den Sprachdienst zu deklarieren:speech_api_key = '<key>' location = '<location>' language = '<language>'
Ersetzen Sie
<key>
durch den API-Schlüssel für Ihre Sprachdienst-Ressource. Ersetzen Sie<location>
durch den Standort, den Sie bei der Erstellung der Sprachdienst-Ressource verwendet haben.Ersetzen Sie
<language>
durch den Gebietsschema-Namen der Sprache, in der Sie sprechen werden, z. B.en-GB
für Englisch oderzn-HK
für Kantonesisch. Eine Liste der unterstützten Sprachen und ihrer Gebietsschema-Namen finden Sie in der Dokumentation zur Sprach- und Stimmenunterstützung auf Microsoft Docs. -
Fügen Sie darunter die folgende Funktion ein, um ein Zugriffstoken zu erhalten:
def get_access_token(): headers = { 'Ocp-Apim-Subscription-Key': speech_api_key } token_endpoint = f'https://{location}.api.cognitive.microsoft.com/sts/v1.0/issuetoken' response = requests.post(token_endpoint, headers=headers) return str(response.text)
Diese Funktion ruft einen Token-Ausgabe-Endpunkt auf und übergibt den API-Schlüssel als Header. Der Endpunkt gibt ein Zugriffstoken zurück, das verwendet werden kann, um die Sprachdienste aufzurufen.
-
Deklarieren Sie darunter eine Funktion, um Sprache aus dem aufgenommenen Audio mithilfe der REST-API in Text umzuwandeln:
def convert_speech_to_text(buffer):
-
Richten Sie innerhalb dieser Funktion die REST-API-URL und die Header ein:
url = f'https://{location}.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1' headers = { 'Authorization': 'Bearer ' + get_access_token(), 'Content-Type': f'audio/wav; codecs=audio/pcm; samplerate={rate}', 'Accept': 'application/json;text/xml' } params = { 'language': language }
Diese Funktion erstellt eine URL basierend auf dem Standort der Sprachdienst-Ressource. Anschließend werden die Header mit dem Zugriffstoken aus der Funktion
get_access_token
sowie der Abtastrate des aufgenommenen Audios gefüllt. Schließlich werden einige Parameter definiert, die mit der URL übergeben werden und die Sprache des Audios enthalten. -
Fügen Sie darunter den folgenden Code ein, um die REST-API aufzurufen und den Text zurückzubekommen:
response = requests.post(url, headers=headers, params=params, data=buffer) response_json = response.json() if response_json['RecognitionStatus'] == 'Success': return response_json['DisplayText'] else: return ''
Diese Funktion ruft die URL auf und dekodiert den JSON-Wert, der in der Antwort enthalten ist. Der Wert
RecognitionStatus
in der Antwort zeigt an, ob die Umwandlung von Sprache in Text erfolgreich war. Wenn dieser WertSuccess
ist, wird der Text aus der Funktion zurückgegeben, andernfalls wird ein leerer String zurückgegeben. -
Definieren Sie oberhalb der Schleife
while True:
eine Funktion, um den Text zu verarbeiten, der vom Sprachdienst zurückgegeben wird. Diese Funktion wird den Text vorerst nur in der Konsole ausgeben.def process_text(text): print(text)
-
Ersetzen Sie schließlich den Aufruf von
play_audio
in der Schleifewhile True
durch einen Aufruf der Funktionconvert_speech_to_text
, wobei der Text an die Funktionprocess_text
übergeben wird:text = convert_speech_to_text(buffer) process_text(text)
-
Führen Sie den Code aus. Drücken Sie die Taste und sprechen Sie ins Mikrofon. Lassen Sie die Taste los, wenn Sie fertig sind, und das Audio wird in Text umgewandelt und in der Konsole ausgegeben.
pi@raspberrypi:~/smart-timer $ python3 app.py Hello world. Welcome to IoT for beginners.
Probieren Sie verschiedene Arten von Sätzen aus, einschließlich Sätzen, bei denen Wörter gleich klingen, aber unterschiedliche Bedeutungen haben. Wenn Sie beispielsweise auf Englisch sprechen, sagen Sie: „I want to buy two bananas and an apple too“ und bemerken Sie, wie der Dienst das korrekte „to“, „two“ und „too“ basierend auf dem Kontext des Wortes verwendet, nicht nur basierend auf seinem Klang.
💁 Sie finden diesen Code im Ordner code-speech-to-text/pi.
😀 Ihr Sprache-zu-Text-Programm war ein Erfolg!
Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.