# ടെക്‌സ്‌റ്റ് ടു സ്പീച്ച് - വെർച്വൽ ഐഒടി ഡിവൈസ് പാഠത്തിന്റെ ഈ ഭാഗത്തിൽ, സ്പീച്ച് സർവീസ് ഉപയോഗിച്ച് ടെക്‌സ്‌റ്റിനെ സ്പീച്ചിലേക്കു മാറ്റുന്നതിനുള്ള കോഡ് നിങ്ങൾ എഴുതുന്നതാണ്. ## ടെക്‌സ്‌റ്റ് ടു സ്പീച്ച് മാറ്റുക മുൻപത്തെ പാഠത്തിൽ സ്പീച്ച് ടു ടെക്‌സ്‌റ്റ് മാറ്റാൻ ഉപയോഗിച്ച സ്പീച്ച് സർവീസസ് SDK, ടെക്‌സ്‌റ്റ് തിരികെ സ്പീച്ചിലാക്കാനും ഉപയോഗിക്കാവുന്നതാണ്. സ്പീച്ച് വിന്നെടുക്കുമ്പോൾ, സ്പീച്ച് വിവിധമായ ആളുകൾക്കായി സൃഷ്ടിക്കപ്പെട്ട വിവിധ ശബ്ദങ്ങളിലൊന്നായി ഉപയോഗിക്കേണ്ടത് ആവശ്യമാണ്. ഓരോ ഭാഷക്കും വ്യത്യസ്ത ശബ്ദങ്ങളുടെ ഒരു നിരപ്പുണ്ട്, ഓരോ ഭാഷയ്ക്കും പിന്തുണ നൽകുന്ന ശബ്ദങ്ങളുടെ ലിസ്റ്റ് നിങ്ങൾക്ക് സ്പീച്ച് സർവീസസ് SDK-യിൽനിന്ന് ലഭിക്കും. ### ടാസ്‌ക് - ടെക്‌സ്‌റ്റ് ടു സ്പീച്ച് മാറ്റുക 1. VS Code-ൽ `smart-timer` പ്രോജക്ട് തുറക്കുക, ടെർമിനലിൽ വെർച്വൽ അന്തരീക്ഷം ലോഡ് ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക. 1. നിലവിലുള്ള ഇറക്കുമതികളിലേക്ക് `azure.cognitiveservices.speech` പാക്കേജ് നിന്നുള്ള `SpeechSynthesizer`-നെ ഉൾപ്പെടുത്തുക: ```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 ഡോക്സ് - ഭാഷയും ശബ്ദ പിന്തുണയും](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'' ssml += f'' ssml += text ssml += '' ssml += '' ``` 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) ഫോളഡറിൽ കാണാം. 😀 നിങ്ങളുടെ ടൈമർ പ്രോഗ്രാം വിജയം! --- **വിവരണം**: ഈ രേഖ [Co-op Translator](https://github.com/Azure/co-op-translator) എന്ന എআই തർജ്ജമാ സേവനം ഉപയോഗിച്ച് തർജ്ജമ ചെയ്തിരിക്കുന്നു. ഞങ്ങൾ കൃത്യതയുടെ പ്രയത്‌നം ചെയ്യുന്നുവെങ്കിലും, സ്വയംമാറ്റം ചെയ്ത തർജ്ജമകളിൽ തെറ്റുകളും അകൃത്യതകളും ഉണ്ടാകാം എന്ന 점 ശ്രദ്ധിക്കുക. ഈ രേഖയുടെ അവസാനഘടകമായ സ്വന്തം ഭാഷയായ രേഖയെ അഥോറിറ്റേറ്റീവ് ഉറവിടമായായി കണക്കാക്കുക. നിർണ്ണായക വിവരങ്ങൾക്ക്, പ്രൊഫഷണൽ മനുഷ്യരുടെ തർജ്ജമ നിർദ്ദേശിക്കപ്പെടുന്നു. ഈ തർജ്ജമ ഉപയോഗിക്കുന്നതിനാൽ ഉണ്ടാകുന്ന ഏതെങ്കിലും തെറ്റിദ്ധാരണകൾക്ക് അല്ലെങ്കിൽ തെറ്റായ വ്യാഖ്യാനങ്ങൾക്കും ഞങ്ങൾ ഉത്തരവാദികളല്ല.