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...

88 lines
6.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "7966848a1f870e4c42edb4db67b13c57",
"translation_date": "2025-08-28T08:57:03+00:00",
"source_file": "6-consumer/lessons/3-spoken-feedback/virtual-device-text-to-speech.md",
"language_code": "bg"
}
-->
# Текст към реч - Виртуално 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'<speak version=\'1.0\' xml:lang=\'{language}\'>'
ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>'
ssml += text
ssml += '</voice>'
ssml += '</speak>'
```
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).
😀 Вашата програма за таймер беше успешна!
---
**Отказ от отговорност**:
Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.