# பேச்சை எழுத்தாக மாற்றுதல் - ராஸ்பெர்ரி பை இந்த பாடத்தின் இந்த பகுதியில், பேச்சை சேகரிக்கப்பட்ட ஒலியில் இருந்து எழுத்தாக மாற்றும் குறியீட்டை நீங்கள் எழுதுவீர்கள், பேச்சு சேவையைப் பயன்படுத்தி. ## ஒலியை பேச்சு சேவைக்கு அனுப்புதல் ஒலியை REST API-ஐப் பயன்படுத்தி பேச்சு சேவைக்கு அனுப்பலாம். பேச்சு சேவையைப் பயன்படுத்த, முதலில் நீங்கள் அணுகல் டோக்கனை கோர வேண்டும், பின்னர் அந்த டோக்கனை REST API-யை அணுக பயன்படுத்த வேண்டும். இந்த அணுகல் டோக்கன்கள் 10 நிமிடங்களுக்கு பிறகு காலாவதியாகிவிடும், எனவே அவை எப்போதும் புதுப்பிக்கப்பட்டிருக்கும் வகையில் உங்கள் குறியீடு அவற்றை முறைப்படி கோர வேண்டும். ### பணிகள் - அணுகல் டோக்கனைப் பெறுதல் 1. உங்கள் பை-யில் உள்ள `smart-timer` திட்டத்தை திறக்கவும். 1. `play_audio` செயல்பாட்டை நீக்கவும். நீங்கள் பேசியதை மீண்டும் உங்களுக்கு கூற ஒரு ஸ்மார்ட் டைமர் தேவையில்லை என்பதால் இது இனி தேவையில்லை. 1. `app.py` கோப்பின் மேல் பின்வரும் இறக்குமதியைச் சேர்க்கவும்: ```python import requests ``` 1. பேச்சு சேவைக்கான சில அமைப்புகளை அறிவிக்க `while True` மடக்குவடிவத்தின் மேல் பின்வரும் குறியீட்டைச் சேர்க்கவும்: ```python speech_api_key = '' location = '' language = '' ``` `` ஐ உங்கள் பேச்சு சேவை வளத்தின் API விசையுடன் மாற்றவும். `` ஐ நீங்கள் பேச்சு சேவை வளத்தை உருவாக்கிய இடத்துடன் மாற்றவும். `` ஐ நீங்கள் பேசும் மொழிக்கான உள்ளூர் பெயருடன் மாற்றவும், உதாரணமாக ஆங்கிலத்துக்கு `en-GB`, அல்லது கான்டோனீஸுக்கு `zn-HK`. ஆதரிக்கப்படும் மொழிகள் மற்றும் அவற்றின் உள்ளூர் பெயர்களின் பட்டியலை [Microsoft docs இல் உள்ள மொழி மற்றும் குரல் ஆதரவு ஆவணத்தில்](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](https://github.com/Azure/co-op-translator) என்ற AI மொழிபெயர்ப்பு சேவையைப் பயன்படுத்தி மொழிபெயர்க்கப்பட்டுள்ளது. நாங்கள் துல்லியத்திற்காக முயற்சிக்கிறோம், ஆனால் தானியங்கி மொழிபெயர்ப்புகளில் பிழைகள் அல்லது தவறுகள் இருக்கக்கூடும் என்பதை கவனத்தில் கொள்ளவும். அதன் சொந்த மொழியில் உள்ள மூல ஆவணம் அதிகாரப்பூர்வ ஆதாரமாக கருதப்பட வேண்டும். முக்கியமான தகவல்களுக்கு, தொழில்முறை மனித மொழிபெயர்ப்பு பரிந்துரைக்கப்படுகிறது. இந்த மொழிபெயர்ப்பைப் பயன்படுத்துவதால் ஏற்படும் எந்த தவறான புரிதல்களுக்கும் அல்லது தவறான விளக்கங்களுக்கும் நாங்கள் பொறுப்பல்ல.