# സംഭാഷണത്തിൽ നിന്ന് ലിപിവിവരണം - റാസ്ബെറി പൈ പാഠത്തിന്റെ ഈ ഭാഗത്തിൽ, ക്യാഡ്ചർ ചെയ്‌തിരിക്കുന്ന ഓഡിയോയിലെ സംഭാഷണത്തെ ടെക്സ്റ്റിലാക്കി മാറ്റാൻ സ്പീച്ച് സർവീസ് ഉപയോഗിച്ച് കോഡ് എഴുതും. ## ഓഡിയോ സ്പീച്ച് സർവീസിലേക്ക് അയയ്ക്കുക ഓഡിയോ സ്പീച്ച് സർവീസിലേക്ക് REST API ഉപയോഗിച്ച് അയയ്ക്കാൻ കഴിയും. സ്പീച്ച് സർവീസ് ഉപയോഗിക്കാൻ, ആദ്യം ആക്സസ് ടോക്കൺ അഭ്യർത്ഥിക്കണം, തുടർന്ന് ആ ടോക്കൺ ഉപയോഗിച്ച് REST API ആക്സസ് ചെയ്യണം. ഈ ആക്സസ് ടോക്കണുകൾ 10 മിനിറ്റ് കഴിഞ്ഞ് കാലഹരണപ്പെടും, അതിനാൽ നിങ്ങളുടെ കോഡ് അവ സാധാരണയായി അഭ്യർത്ഥിച്ച് യഥാസമയം പുതുക്കാൻ ഉണ്ടാകണം. ###കാര്യ്യം - ആക്സസ് ടോക്കൺ നേടുക 1. നിങ്ങളുടെ പൈയിൽ `smart-timer` പ്രോജക്റ്റ് തുറക്കുക. 1. `play_audio` ഫങ്ഷൻ നീക്കം ചെയ്യുക. ഇനി ഇത് വേണ്ടില്ല, കാരണം നിങ്ങൾ പറഞ്ഞത് വീണ്ടും മടക്കി പറയേണ്ട smart timer ആഗ്രഹിക്കുന്നില്ല. 1. `app.py` ഫയലിന്റെ മേൽഭാഗത്ത് താഴെ കാണുന്ന ഇമ്പോർട്ട് ചേർക്കുക: ```python import requests ``` 1. `while True` ലൂപിന് മുമ്പ് താഴെ കൊടുത്തിരിക്കുന്ന കോഡ് ചേർക്കുക, സ്പീച്ച് സർവീസിന്റെ ചില സെറ്റിംഗുകൾ പ്രഖ്യാപിക്കാൻ: ```python speech_api_key = '' location = '' language = '' ``` `` എന്നത് നിങ്ങളുടെ സ്പീച്ച് സർവീസ് റിസോഴ്‌സ് എപി കീ ആയി മാറ്റുക. `` എന്നത് നിങ്ങൾ സ്പീച്ച് സർവീസ് റിസോഴ്‌സ് സൃഷ്ടിച്ചതിന് ഉപയോഗിച്ച ലൊക്കേഷൻ ആയി മാറ്റുക. `` എന്നത് നിങ്ങളുടെ സംസാര ഭാഷയുടെ ലോക്കേൽ നാമം ആയി മാറ്റുക, ഉദാഹരണത്തിന് ഇംഗ്ലീഷ് ആയെങ്കിൽ `en-GB`, കാൻറൺസീസ് ആയെങ്കിൽ `zn-HK`. മൈക്രോസോഫ്റ്റ് ഡോക്‌സിൽ [ഭാഷകളും വോയ്സ് പിന്തുണയും](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) ഫോളഡറിൽ ലഭ്യമാണ്. 😀 നിങ്ങളുടെ സംഭാഷണത്തിൽ നിന്ന് ലിപിവിവരണ പ്രോഗ്രാം വിജയകരമായി ആക്രീ! --- **അറ്റംപറ്റുന്ന കാര്യങ്ങൾ**: ഈ പ്രമാണം AI വിവർത്തന സേവനമായ [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് വിവർത്തനം ചെയ്തതാണ്. ഞങ്ങൾ കൃത്യതയ്ക്കായി പരിശ്രമിച്ചെങ്കിലും, സ്വയംകൃതമായ വിവർത്തനങ്ങളിൽ പിഴവുകളും തെറ്റായ വിവരങ്ങളും ഉണ്ടാകാവുന്നതാണ്. പ്രാഥമിക ഭാഷയിൽ ഉള്ള മാതൃപ്രമാണം ഔദ്യോഗികമായ സ്രോതസായി പരിഗണിക്കണം. നിർണായകമായ വിവരങ്ങൾക്കായി വിദഗ്ധ മാനവ വിവർത്തനം നിർദ്ദേശിക്കുന്നു. ഈ വിവർത്തനത്തെ ആശ്രയിച്ചുവന്നുഉണ്ടാകാനുള്ള ഏതെന്ത് തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കും ഞങ്ങൾ ഉത്തരവാദിത്വമില്ല.