# Претварање текста у говор - Виртуелни IoT уређај У овом делу лекције, написаћете код за претварање текста у говор користећи услугу за говор. ## Претварање текста у говор SDK за услуге говора који сте користили у претходној лекцији за претварање говора у текст може се користити за претварање текста назад у говор. Приликом захтева за говор, потребно је да наведете глас који ће се користити, јер се говор може генерисати користећи различите гласове. Сваки језик подржава низ различитих гласова, а листу подржаних гласова за сваки језик можете добити из SDK-а за услуге говора. ### Задатак - претварање текста у говор 1. Отворите пројекат `smart-timer` у VS Code-у и уверите се да је виртуелно окружење учитано у терминалу. 1. Увезите `SpeechSynthesizer` из пакета `azure.cognitiveservices.speech` додавањем у постојеће увозе: ```python from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer ``` 1. Изнад функције `say`, направите конфигурацију за говор коју ћете користити са синтетизатором говора: ```python speech_config = SpeechConfig(subscription=speech_api_key, region=location) speech_config.speech_synthesis_language = language speech_synthesizer = SpeechSynthesizer(speech_config=speech_config) ``` Ово користи исти API кључ, локацију и језик који је користио препознавач. 1. Испод овога, додајте следећи код за добијање гласа и постављање на конфигурацију за говор: ```python 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 ``` Ово преузима листу свих доступних гласова, а затим проналази први глас који одговара језику који се користи. > 💁 Комплетну листу подржаних гласова можете добити из [документације о подршци за језик и глас на Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/speech-service/language-support?WT.mc_id=academic-17441-jabenn#text-to-speech). Ако желите да користите одређени глас, можете уклонити ову функцију и ручно унети име гласа из документације. На пример: > > ```python > speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural' > ``` 1. Ажурирајте садржај функције `say` да генерише SSML за одговор: ```python ssml = f'' ssml += f'' ssml += text ssml += '' ssml += '' ``` 1. Испод овога, зауставите препознавање говора, изговорите SSML, а затим поново покрените препознавање: ```python recognizer.stop_continuous_recognition() speech_synthesizer.speak_ssml(ssml) recognizer.start_continuous_recognition() ``` Препознавање се зауставља док се текст изговара како би се избегло да се најављивање покретања тајмера детектује, пошаље LUIS-у и евентуално протумачи као захтев за постављање новог тајмера. > 💁 Ово можете тестирати тако што ћете закоментарисати линије за заустављање и поновно покретање препознавања. Поставите један тајмер, и можда ћете приметити да најављивање поставља нови тајмер, што узрокује нову најаву, која води до новог тајмера, и тако у недоглед! 1. Покрените апликацију и уверите се да функцијска апликација такође ради. Поставите неке тајмере, и чућете говорни одговор који каже да је ваш тајмер постављен, а затим други говорни одговор када тајмер истекне. > 💁 Овај код можете пронаћи у [code-spoken-response/virtual-iot-device](../../../../../6-consumer/lessons/3-spoken-feedback/code-spoken-response/virtual-iot-device) фасцикли. 😀 Ваш програм за тајмер је био успешан! --- **Одрицање од одговорности**: Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [Co-op Translator](https://github.com/Azure/co-op-translator). Иако се трудимо да обезбедимо тачност, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални превод од стране људи. Не преузимамо одговорност за било каква погрешна тумачења или неспоразуме који могу настати услед коришћења овог превода.