4.8 KiB
Text na řeč - Virtuální IoT zařízení
V této části lekce napíšete kód pro převod textu na řeč pomocí služby pro rozpoznávání řeči.
Převod textu na řeč
SDK služby pro rozpoznávání řeči, kterou jste použili v předchozí lekci k převodu řeči na text, lze použít i k převodu textu zpět na řeč. Při požadavku na řeč je potřeba zadat hlas, který se má použít, protože řeč může být generována pomocí různých hlasů.
Každý jazyk podporuje řadu různých hlasů a seznam podporovaných hlasů pro každý jazyk můžete získat ze SDK služby pro rozpoznávání řeči.
Úkol - převod textu na řeč
-
Otevřete projekt
smart-timer
ve VS Code a ujistěte se, že je v terminálu načten virtuální prostředí. -
Importujte
SpeechSynthesizer
z balíčkuazure.cognitiveservices.speech
přidáním do stávajících importů:from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
-
Nad funkcí
say
vytvořte konfiguraci řeči, kterou použijete s nástrojem pro syntézu řeči:speech_config = SpeechConfig(subscription=speech_api_key, region=location) speech_config.speech_synthesis_language = language speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
Tato konfigurace používá stejný API klíč, umístění a jazyk, které byly použity rozpoznávačem.
-
Pod tímto kódem přidejte následující kód pro získání hlasu a jeho nastavení v konfiguraci řeč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 získá seznam všech dostupných hlasů a poté najde první hlas, který odpovídá používanému jazyku.
💁 Kompletní seznam podporovaných hlasů můžete získat z dokumentace o podpoře jazyků a hlasů na Microsoft Docs. Pokud chcete použít konkrétní hlas, můžete tuto funkci odstranit a pevně nastavit hlas na název hlasu z této dokumentace. Například:
speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
-
Aktualizujte obsah funkce
say
tak, aby generovala SSML pro odpověď: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ódem zastavte rozpoznávání řeči, přehrajte SSML a poté znovu spusťte rozpoznávání:
recognizer.stop_continuous_recognition() speech_synthesizer.speak_ssml(ssml) recognizer.start_continuous_recognition()
Rozpoznávání je zastaveno během přehrávání textu, aby se zabránilo tomu, že oznámení o spuštění časovače bude detekováno, odesláno do LUIS a možná interpretováno jako požadavek na nastavení nového časovače.
💁 Můžete to otestovat tak, že zakomentujete řádky pro zastavení a restartování rozpoznávání. Nastavte jeden časovač a možná zjistíte, že oznámení nastaví nový časovač, což způsobí nové oznámení, které nastaví další časovač, a tak dále donekonečna!
-
Spusťte aplikaci a ujistěte se, že funkční aplikace také běží. Nastavte několik časovačů a uslyšíte mluvenou odpověď, která říká, že váš časovač byl nastaven, a poté další mluvenou odpověď, když časovač skončí.
💁 Tento kód najdete ve složce code-spoken-response/virtual-iot-device.
😀 Váš program pro časovač byl úspěšný!
Prohlášení:
Tento dokument byl přeložen pomocí služby AI pro překlady Co-op Translator. Ačkoli se snažíme o přesnost, mějte prosím na paměti, že automatizované 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.