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

119 lines
11 KiB

# ಭಾಷಣವನ್ನು ಪಠ್ಯಕ್ಕೆ - ರಾಸ್ಪ್ಬೆರಿ ಪೈ
ಪಾಠದ ಈ ಭಾಗದಲ್ಲಿ, ನೀವು ಸಂಗ್ರಹಿಸಿರುವ ಧ್ವನಿಯನ್ನು ಭಾಷಣ ಸೇವೆಯನ್ನು ಬಳಸಿ ಪಠ್ಯಕ್ಕೆ ಪರಿವರ್ತಿಸುವ ಕೋಡ್ ಅನ್ನು ಬರೆಯುತ್ತೀರಿ.
## ಧ್ವನಿಯನ್ನು ಭಾಷಣ ಸೇವೆಗೆ ಕಳುಹಿಸಿ
ಧ್ವನಿಯನ್ನು REST API ಬಳಸಿ ಭಾಷಣ ಸೇವೆಗೆ ಕಳುಹಿಸಬಹುದು. ಭಾಷಣ ಸೇವೆಯನ್ನು ಬಳಸಲು ಮೊದಲು ನೀವು ಪ್ರವೇಶ ಟೋಕನ್ ಬೇಡಿಕೊಳ್ಳಬೇಕು, ನಂತರ ಆ ಟೋಕನ್ ಅನ್ನು REST API ಗೆ ಪ್ರವೇಶಿಸಲು ಬಳಸಬೇಕು. ಈ ಪ್ರವೇಶ ಟೋಕನ್‌ಗಳು 10 ನಿಮಿಷಗಳ ನಂತರ ಅವಧಿ ಮುಗಿಯುತ್ತವೆ, ಆದ್ದರಿಂದ ನಿಮ್ಮ ಕೋಡ್ ಅವುಗಳನ್ನು ನಿಯಮಿತವಾಗಿ ಬೇಡಿಕೊಳ್ಳಬೇಕು ಅಂದರೆ ಅವು ಸದಾ ನವೀಕೃತವಾಗಿದ್ದುಕೊಳ್ಳಲಿ.
###ಕಾರ್ಯ - ಪ್ರವೇಶ ಟೋಕನ್ ಪಡೆಯಿರಿ
1. ನಿಮ್ಮ ಪೈನಲ್ಲಿ `smart-timer` ಪ್ರಾಜೆಕ್ಟ್ ತೆರೆಯಿರಿ.
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. ಈ ಫังก್ಷನ್ ಒಳಗೆ, REST API URL ಮತ್ತು ಹೆಡರ್‌ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಿ:
```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. ಕೊನೆಯಲ್ಲಿ `while True` ಲೂಪಿನಲ್ಲಿ `play_audio` ಕರೆಯುವಿಕೆಯನ್ನು `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) ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಕಂಡುಹಿಡಿಯಬಹುದು.
😀 ನಿಮ್ಮ ಭಾಷಣವನ್ನು ಪಠ್ಯಕ್ಕೆ ಪರಿವರ್ತಿಸುವ ಪ್ರೋಗ್ರಾಂ ಯಶಸ್ವಿಯಾಯಿತು!
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**ಬೆಳಿಗ್ಗೆ ಪ್ರಕಟಣೆ**:
ಈ ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು AI ಭಾಷಾಂತರ ಸೇವೆ [Co-op Translator](https://github.com/Azure/co-op-translator) ಬಳಸಿಕೊಂಡು ಭಾಷಾಂತರಿಸಲಾಗಿದೆ. ನಾವು ನಿಖರತೆಯನ್ನು ಸಾಧಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದರೂ, ಯಂತ್ರದ ಭಾಷಾಂತರಗಳಲ್ಲಿ ತಪ್ಪುಗಳು ಅಥವಾ ಅಸತ್ಯತೆಗಳು ಇರಬಹುದು ಎಂದು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಮೂಲ ಭಾಷೆಯಲ್ಲಿ ರಚಿಸಲಾದ ಮೂಲ ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಅಧಿಕೃತ ಮೂಲ ಎಂದು ಪರಿಗಣಿಸಬೇಕು. ಪ್ರಮುಖ ಮಾಹಿತಿಗಾಗಿ, ವೃತ್ತಿಪರ ಮಾನವ ಭಾಷಾಂತರವನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ. ಈ ಭಾಷಾಂತರದಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ಗೊಂದಲಗಳು ಅಥವಾ ತಪ್ಪು ಅರ್ಥಗಳಿಗಾಗಿ ನಾವು ಹೊಣೆಗಾರರಾಗಿಲ್ಲ.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->