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/1-speech-recognition/pi-speech-to-text.md

126 lines
8.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": "af249a24d4fe4f4de4806adbc3bc9d86",
"translation_date": "2025-08-28T09:17:28+00:00",
"source_file": "6-consumer/lessons/1-speech-recognition/pi-speech-to-text.md",
"language_code": "bg"
}
-->
# Преобразуване на реч в текст - Raspberry Pi
В тази част от урока ще напишете код, който преобразува речта от записания аудио файл в текст, използвайки услугата за преобразуване на реч.
## Изпращане на аудио към услугата за преобразуване на реч
Аудиото може да бъде изпратено към услугата за преобразуване на реч чрез REST API. За да използвате услугата, първо трябва да заявите токен за достъп, след което да използвате този токен, за да получите достъп до REST API. Тези токени за достъп изтичат след 10 минути, така че вашият код трябва редовно да ги заявява, за да гарантира, че винаги са актуални.
### Задача - получаване на токен за достъп
1. Отворете проекта `smart-timer` на вашия Raspberry Pi.
1. Премахнете функцията `play_audio`. Тя вече не е необходима, тъй като не искате умният таймер да повтаря това, което сте казали.
1. Добавете следния импорт в началото на файла `app.py`:
```python
import requests
```
1. Добавете следния код над цикъла `while True`, за да зададете някои настройки за услугата за преобразуване на реч:
```python
speech_api_key = '<key>'
location = '<location>'
language = '<language>'
```
Заменете `<key>` с API ключа за вашия ресурс за преобразуване на реч. Заменете `<location>` с местоположението, което сте използвали при създаването на ресурса за преобразуване на реч.
Заменете `<language>` с името на локала за езика, на който ще говорите, например `en-GB` за английски или `zn-HK` за кантонски. Можете да намерите списък с поддържаните езици и техните локали в [документацията за поддръжка на езици и гласове на Microsoft](https://docs.microsoft.com/azure/cognitive-services/speech-service/language-support?WT.mc_id=academic-17441-jabenn#speech-to-text).
1. Под това добавете следната функция за получаване на токен за достъп:
```python
def get_access_token():
headers = {
'Ocp-Apim-Subscription-Key': speech_api_key
}
token_endpoint = f'https://{location}.api.cognitive.microsoft.com/sts/v1.0/issuetoken'
response = requests.post(token_endpoint, headers=headers)
return str(response.text)
```
Тази функция извиква крайна точка за издаване на токени, като предава API ключа като заглавие. Този повик връща токен за достъп, който може да се използва за извикване на услугите за преобразуване на реч.
1. Под това декларирайте функция за преобразуване на речта от записаното аудио в текст, използвайки REST API:
```python
def convert_speech_to_text(buffer):
```
1. Вътре в тази функция настройте URL адреса и заглавията за REST API:
```python
url = f'https://{location}.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1'
headers = {
'Authorization': 'Bearer ' + get_access_token(),
'Content-Type': f'audio/wav; codecs=audio/pcm; samplerate={rate}',
'Accept': 'application/json;text/xml'
}
params = {
'language': language
}
```
Това изгражда URL адрес, използвайки местоположението на ресурса за преобразуване на реч. След това попълва заглавията с токена за достъп от функцията `get_access_token`, както и честотата на семплиране, използвана за записване на аудиото. Накрая дефинира някои параметри, които да бъдат предадени с URL адреса, съдържащ езика на аудиото.
1. Под това добавете следния код за извикване на REST API и получаване на текста:
```python
response = requests.post(url, headers=headers, params=params, data=buffer)
response_json = response.json()
if response_json['RecognitionStatus'] == 'Success':
return response_json['DisplayText']
else:
return ''
```
Този код извиква URL адреса и декодира JSON стойността, която идва в отговора. Стойността `RecognitionStatus` в отговора показва дали повикването успешно е преобразувало речта в текст, и ако тя е `Success`, текстът се връща от функцията, в противен случай се връща празен низ.
1. Над цикъла `while True:` дефинирайте функция за обработка на текста, върнат от услугата за преобразуване на реч в текст. Тази функция засега просто ще отпечатва текста в конзолата.
```python
def process_text(text):
print(text)
```
1. Накрая заменете извикването на `play_audio` в цикъла `while True` с извикване на функцията `convert_speech_to_text`, като предадете текста на функцията `process_text`:
```python
text = convert_speech_to_text(buffer)
process_text(text)
```
1. Стартирайте кода. Натиснете бутона и говорете в микрофона. Освободете бутона, когато сте готови, и аудиото ще бъде преобразувано в текст и отпечатано в конзолата.
```output
pi@raspberrypi:~/smart-timer $ python3 app.py
Hello world.
Welcome to IoT for beginners.
```
Опитайте различни типове изречения, както и изречения, в които думите звучат еднакво, но имат различни значения. Например, ако говорите на английски, кажете "I want to buy two bananas and an apple too" и забележете как ще използва правилните "to", "two" и "too" въз основа на контекста на думата, а не само на нейното звучене.
> 💁 Можете да намерите този код в папката [code-speech-to-text/pi](../../../../../6-consumer/lessons/1-speech-recognition/code-speech-to-text/pi).
😀 Вашата програма за преобразуване на реч в текст беше успешна!
---
**Отказ от отговорност**:
Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.