# స్పీచ్ టు టెక్స్ట్ - రాస్ప్బెర్రిపై ఈ భాగంలో, మీరు క్యాప్చర్ చేసిన ఆడియోలోని స్పీచ్‌ను టెక్స్ట్‌గా మార్చడానికి స్పీచ్ సర్వీస్ ఉపయోగించడానికై కోడ్ రాస్తారు. ## ఆడియోను స్పీచ్ సర్వీస్‌కు పంపండి ఆడియోను 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`. మైక్రోసాఫ్ట్ డాక్స్‌లో [Language and voice support documentation](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 } ``` ఇది స్పీచ్ సర్వీసుల రిసోర్స్ యొక్క ప్రదేశం ఉపయోగించి యూరెల్‌ను తయారుచేస్తుంది. తరువాత `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 '' ``` ఇది యూరెల్‌ను పిలుస్తుంది మరియు ప్రతిస్పందనలో వచ్చే 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) ఉపయోగించి అనువదించారు. మేము ఖచ్చితత్వానికి సహాకరిస్తున్నా, ఆటోమేటెడ్ అనువాదాల్లో పొరపాట్లు లేదా లోపాలు ఉండవచ్చు అని దయచేసి గమనించండి. స్థానిక భాషలో ఉన్న అసలు పత్రాన్ని అధికారిక మూలం గా పరిగణించాలి. కీలకమైన సమాచారానికి, ప్రొఫెషనల్ హ్యూమన్ అనువాదాన్ని సిఫార్సు చేయబడుతుంది. ఈ అనువాదం వాడకంలో వచ్చిన ఏవైనా అర్ధం తప్పుదోవలు లేదా ఆశయ దోషాల కోసం మేము బాధ్యత కాదు.