6.0 KiB
Převod řeči na text - Raspberry Pi
V této části lekce napíšete kód, který převede řeč z nahraného zvuku na text pomocí služby pro rozpoznávání řeči.
Odeslání zvuku do služby pro rozpoznávání řeči
Zvuk lze odeslat do služby pro rozpoznávání řeči pomocí REST API. Abyste mohli tuto službu používat, musíte nejprve požádat o přístupový token a poté tento token použít k přístupu k REST API. Tyto přístupové tokeny vyprší po 10 minutách, takže váš kód by měl tokeny pravidelně obnovovat, aby byly vždy aktuální.
Úkol - získání přístupového tokenu
-
Otevřete projekt
smart-timer
na svém Raspberry Pi. -
Odstraňte funkci
play_audio
. Tato funkce již není potřeba, protože nechcete, aby chytrý časovač opakoval, co jste řekli. -
Přidejte následující import na začátek souboru
app.py
:import requests
-
Přidejte následující kód nad smyčku
while True
, abyste deklarovali některá nastavení pro službu rozpoznávání řeči:speech_api_key = '<key>' location = '<location>' language = '<language>'
Nahraďte
<key>
API klíčem pro váš zdroj služby rozpoznávání řeči. Nahraďte<location>
umístěním, které jste použili při vytvoření zdroje služby rozpoznávání řeči.Nahraďte
<language>
názvem místního nastavení jazyka, kterým budete mluvit, napříkladen-GB
pro angličtinu nebozn-HK
pro kantonštinu. Seznam podporovaných jazyků a jejich názvů místních nastavení najdete v dokumentaci o podpoře jazyků a hlasů na Microsoft Docs. -
Pod tento kód přidejte následující funkci pro získání přístupového tokenu:
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)
Tato funkce volá koncový bod pro vydávání tokenů a předává API klíč jako hlavičku. Tato volání vrací přístupový token, který lze použít k volání služeb rozpoznávání řeči.
-
Pod tento kód deklarujte funkci pro převod řeči z nahraného zvuku na text pomocí REST API:
def convert_speech_to_text(buffer):
-
Uvnitř této funkce nastavte URL a hlavičky pro REST API:
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 }
Tato část kódu sestavuje URL pomocí umístění zdroje služby rozpoznávání řeči. Poté naplní hlavičky přístupovým tokenem z funkce
get_access_token
a vzorkovací frekvencí použitou pro nahrávání zvuku. Nakonec definuje některé parametry, které budou předány s URL a obsahují jazyk zvuku. -
Pod tento kód přidejte následující část pro volání REST API a získání textu:
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 ''
Tato část kódu volá URL a dekóduje hodnotu JSON, která je obsažena v odpovědi. Hodnota
RecognitionStatus
v odpovědi indikuje, zda bylo možné úspěšně převést řeč na text. Pokud je tato hodnotaSuccess
, funkce vrátí text, jinak vrátí prázdný řetězec. -
Nad smyčku
while True:
definujte funkci pro zpracování textu vráceného službou pro převod řeči na text. Tato funkce zatím pouze vypíše text do konzole.def process_text(text): print(text)
-
Nakonec nahraďte volání
play_audio
ve smyčcewhile True
voláním funkceconvert_speech_to_text
a předejte text funkciprocess_text
:text = convert_speech_to_text(buffer) process_text(text)
-
Spusťte kód. Stiskněte tlačítko a mluvte do mikrofonu. Uvolněte tlačítko, až budete hotovi, a zvuk bude převeden na text a vytištěn do konzole.
pi@raspberrypi:~/smart-timer $ python3 app.py Hello world. Welcome to IoT for beginners.
Vyzkoušejte různé typy vět, včetně vět, kde slova znějí stejně, ale mají různé významy. Například pokud mluvíte anglicky, řekněte „I want to buy two bananas and an apple too“ a všimněte si, jak správně použije „to“, „two“ a „too“ na základě kontextu slova, nejen jeho zvuku.
💁 Tento kód najdete ve složce code-speech-to-text/pi.
😀 Váš program pro převod řeči na text byl úspěšný!
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. I když se snažíme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.