You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/bg/6-consumer/lessons/3-spoken-feedback/virtual-device-text-to-spee...

6.9 KiB

Текст към реч - Виртуално IoT устройство

В тази част на урока ще напишете код за преобразуване на текст в реч, използвайки услугата за реч.

Преобразуване на текст в реч

SDK за услуги за реч, който използвахте в предишния урок за преобразуване на реч в текст, може да се използва и за преобразуване на текст обратно в реч. Когато заявявате реч, трябва да посочите гласа, който да се използва, тъй като речта може да бъде генерирана с различни гласове.

Всеки език поддържа набор от различни гласове, и можете да получите списък с поддържаните гласове за всеки език чрез SDK за услуги за реч.

Задача - преобразуване на текст в реч

  1. Отворете проекта smart-timer в VS Code и се уверете, че виртуалната среда е заредена в терминала.

  2. Импортирайте SpeechSynthesizer от пакета azure.cognitiveservices.speech, като го добавите към съществуващите импорти:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. Над функцията say създайте конфигурация за реч, която да се използва със синтезатора на реч:

    speech_config = SpeechConfig(subscription=speech_api_key,
                                 region=location)
    speech_config.speech_synthesis_language = language
    speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
    

    Това използва същия API ключ, местоположение и език, които са използвани от разпознавателя.

  4. Под това добавете следния код, за да получите глас и да го зададете в конфигурацията за реч:

    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. Ако искате да използвате конкретен глас, можете да премахнете тази функция и да зададете гласа директно с името му от документацията. Например:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. Актуализирайте съдържанието на функцията say, за да генерирате SSML за отговора:

    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>'
    
  6. Под това спрете разпознаването на реч, произнесете SSML, след което отново стартирайте разпознаването:

    recognizer.stop_continuous_recognition()
    speech_synthesizer.speak_ssml(ssml)
    recognizer.start_continuous_recognition()
    

    Разпознаването се спира, докато текстът се произнася, за да се избегне засичането на съобщението за стартиране на таймера, изпращането му към LUIS и евентуалното му интерпретиране като заявка за задаване на нов таймер.

    💁 Можете да тествате това, като коментирате редовете за спиране и рестартиране на разпознаването. Задайте един таймер и може да откриете, че съобщението задава нов таймер, което води до ново съобщение, което задава нов таймер, и така нататък безкрайно!

  7. Стартирайте приложението и се уверете, че функцията на приложението също работи. Задайте няколко таймера и ще чуете гласов отговор, който казва, че вашият таймер е зададен, а след това друг гласов отговор, когато таймерът приключи.

💁 Можете да намерите този код в папката code-spoken-response/virtual-iot-device.

😀 Вашата програма за таймер беше успешна!


Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.