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-timer
projektą savo Pi. -
Pašalinkite
play_audio
funkciją. Jos nebereikia, nes nenorite, kad išmanusis laikmatis pakartotų tai, ką pasakėte. -
Pridėkite šį importą failo
app.py
viršuje:import requests
-
Pridėkite šį kodą virš
while True
ciklo, 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-GB
anglų kalbai arbazn-HK
kantonieč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_token
funkcijos, 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
RecognitionStatus
reikš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 True
cikle pakeiskiteplay_audio
kvietimą įconvert_speech_to_text
funkcijos kvietimą, perduodant tekstą įprocess_text
funkciją: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ą.