5.8 KiB
Kalbos pavertimas tekstu - Raspberry Pi
Šioje pamokos dalyje rašysite kodą, kuris pavers užfiksuotą garsą tekstu, naudodamas kalbos paslaugą.
Siųskite garsą į kalbos paslaugą
Garsą galima siųsti į kalbos paslaugą naudojant REST API. Norėdami naudotis kalbos paslauga, pirmiausia turite gauti prieigos raktą, o tada naudoti tą raktą REST API pasiekti. Šie prieigos raktai galioja tik 10 minučių, todėl jūsų kodas turėtų reguliariai juos atnaujinti, kad jie visada būtų galiojantys.
Užduotis - gauti prieigos raktą
-
Atidarykite
smart-timerprojektą savo Pi. -
Pašalinkite
play_audiofunkciją. Jos nebereikia, nes nenorite, kad išmanusis laikmatis pakartotų tai, ką pasakėte. -
Pridėkite šį importą failo
app.pyviršuje:import requests -
Pridėkite šį kodą virš
while Trueciklo, kad nustatytumėte kai kuriuos kalbos paslaugos nustatymus:speech_api_key = '<key>' location = '<location>' language = '<language>'Pakeiskite
<key>savo kalbos paslaugos API raktu. Pakeiskite<location>vieta, kurią naudojote kurdami kalbos paslaugos išteklių.Pakeiskite
<language>kalbos, kuria kalbėsite, lokalės pavadinimu, pavyzdžiui,en-GBanglų kalbai arbazn-HKkantoniečių kalbai. Palaikomų kalbų ir jų lokalės pavadinimų sąrašą galite rasti Microsoft dokumentacijoje apie kalbų ir balsų palaikymą. -
Po šiuo kodu pridėkite šią funkciją, kad gautumėte prieigos raktą:
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)Ši funkcija kviečia raktų išdavimo galinį tašką, perduodama API raktą kaip antraštę. Šis kvietimas grąžina prieigos raktą, kurį galima naudoti kalbos paslaugoms kviesti.
-
Po šiuo kodu apibrėžkite funkciją, kuri pavers užfiksuotą garsą tekstu naudodama REST API:
def convert_speech_to_text(buffer): -
Šios funkcijos viduje nustatykite REST API URL ir antraštes:
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 }Šis kodas sukuria URL, naudodamas kalbos paslaugos ištekliaus vietą. Tada jis užpildo antraštes prieigos raktu iš
get_access_tokenfunkcijos, taip pat mėginių ėmimo dažniu, naudotu garsui užfiksuoti. Galiausiai jis apibrėžia kai kuriuos parametrus, kurie bus perduoti kartu su URL, nurodant kalbą garse. -
Po šiuo kodu pridėkite šį kodą, kad iškviestumėte REST API ir gautumėte tekstą:
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 ''Šis kodas kviečia URL ir dekoduoja JSON reikšmę, kuri grįžta atsakyme. Atsakyme esanti
RecognitionStatusreikšmė nurodo, ar kvietimas sėkmingai pavertė kalbą tekstu. Jei reikšmė yraSuccess, tekstas grąžinamas iš funkcijos, kitu atveju grąžinamas tuščias tekstas. -
Virš
while True:ciklo apibrėžkite funkciją, kuri apdoros tekstą, grąžintą iš kalbos į tekstą paslaugos. Šiuo metu ši funkcija tiesiog atspausdins tekstą konsolėje.def process_text(text): print(text) -
Galiausiai,
while Truecikle pakeiskiteplay_audiokvietimą įconvert_speech_to_textfunkcijos kvietimą, perduodant tekstą įprocess_textfunkciją:text = convert_speech_to_text(buffer) process_text(text) -
Paleiskite kodą. Paspauskite mygtuką ir kalbėkite į mikrofoną. Atleiskite mygtuką, kai baigsite, ir garsas bus paverstas tekstu bei atspausdintas konsolėje.
pi@raspberrypi:~/smart-timer $ python3 app.py Hello world. Welcome to IoT for beginners.Išbandykite skirtingus sakinius, taip pat sakinius, kuriuose žodžiai skamba vienodai, bet turi skirtingas reikšmes. Pavyzdžiui, jei kalbate angliškai, pasakykite „I want to buy two bananas and an apple too“ ir pastebėkite, kaip sistema teisingai parenka „to“, „two“ ir „too“ pagal žodžio kontekstą, o ne tik pagal jo garsą.
💁 Šį kodą galite rasti code-speech-to-text/pi aplanke.
😀 Jūsų kalbos pavertimo tekstu programa buvo sėkminga!
Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, atkreipkite dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius naudojant šį vertimą.