4.7 KiB
Text na reč - Virtuálne IoT zariadenie
V tejto časti lekcie napíšete kód na prevod textu na reč pomocou služby na spracovanie reči.
Prevod textu na reč
SDK služby na spracovanie reči, ktoré ste použili v predchádzajúcej lekcii na prevod reči na text, môžete použiť aj na prevod textu späť na reč. Pri požiadavke na reč musíte zadať hlas, ktorý sa má použiť, pretože reč môže byť generovaná pomocou rôznych hlasov.
Každý jazyk podporuje rôzne hlasy a zoznam podporovaných hlasov pre každý jazyk môžete získať zo SDK služby na spracovanie reči.
Úloha - prevod textu na reč
-
Otvorte projekt
smart-timer
vo VS Code a uistite sa, že virtuálne prostredie je načítané v termináli. -
Importujte
SpeechSynthesizer
z balíkaazure.cognitiveservices.speech
pridaním do existujúcich importov:from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
-
Nad funkciou
say
vytvorte konfiguráciu reči, ktorá sa použije so syntetizátorom reči:speech_config = SpeechConfig(subscription=speech_api_key, region=location) speech_config.speech_synthesis_language = language speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
Táto konfigurácia používa rovnaký API kľúč, lokalitu a jazyk, aké používal rozpoznávač.
-
Pod týmto kódom pridajte nasledujúci kód na získanie hlasu a jeho nastavenie v konfigurácii reči:
voices = speech_synthesizer.get_voices_async().get().voices first_voice = next(x for x in voices if x.locale.lower() == language.lower()) speech_config.speech_synthesis_voice_name = first_voice.short_name
Tento kód načíta zoznam všetkých dostupných hlasov a potom nájde prvý hlas, ktorý zodpovedá používanej reči.
💁 Kompletný zoznam podporovaných hlasov môžete nájsť v dokumentácii o podpore jazykov a hlasov na Microsoft Docs. Ak chcete použiť konkrétny hlas, môžete túto funkciu odstrániť a pevne nastaviť hlas na názov hlasu z tejto dokumentácie. Napríklad:
speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
-
Aktualizujte obsah funkcie
say
tak, aby generovala SSML pre odpoveď:ssml = f'<speak version=\'1.0\' xml:lang=\'{language}\'>' ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>' ssml += text ssml += '</voice>' ssml += '</speak>'
-
Pod týmto kódom zastavte rozpoznávanie reči, prehrajte SSML a potom opäť spustite rozpoznávanie:
recognizer.stop_continuous_recognition() speech_synthesizer.speak_ssml(ssml) recognizer.start_continuous_recognition()
Rozpoznávanie sa zastaví počas prehrávania textu, aby sa zabránilo tomu, že oznámenie o spustení časovača bude detegované, odoslané do LUIS a prípadne interpretované ako požiadavka na nastavenie nového časovača.
💁 Môžete si to vyskúšať tak, že zakomentujete riadky na zastavenie a opätovné spustenie rozpoznávania. Nastavte jeden časovač a možno zistíte, že oznámenie nastaví nový časovač, čo spôsobí nové oznámenie, vedúce k novému časovaču, a tak ďalej donekonečna!
-
Spustite aplikáciu a uistite sa, že funkčná aplikácia tiež beží. Nastavte niekoľko časovačov a budete počuť hovorenú odpoveď, ktorá oznámi, že váš časovač bol nastavený, a ďalšiu hovorenú odpoveď, keď časovač skončí.
💁 Tento kód nájdete v priečinku code-spoken-response/virtual-iot-device.
😀 Váš program na časovače bol úspešný!
Upozornenie:
Tento dokument bol preložený pomocou služby na automatický preklad Co-op Translator. Hoci sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nenesieme zodpovednosť za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.