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

11 KiB

ਸਪੀਚ ਤੋਂ ਟੈਕਸਟ - ਰਾਸਪਬੈਰੀ ਪਾਈ

ਇਸ ਪਾਠ ਦੇ ਇਸ ਹਿੱਸੇ ਵਿੱਚ, ਤੁਸੀਂ ਕੋਡ ਲਿਖੋਗੇ ਜੋ ਕੈਪਚਰ ਕੀਤੇ ਗਏ ਆਡੀਓ ਵਿੱਚ ਬੋਲੀ ਨੂੰ ਟੈਕਸਟ ਵਿੱਚ ਬਦਲਣ ਲਈ ਸਪੀਚ ਸਰਵਿਸ ਦੀ ਵਰਤੋਂ ਕਰੇਗਾ।

ਆਡੀਓ ਨੂੰ ਸਪੀਚ ਸਰਵਿਸ ਨੂੰ ਭੇਜੋ

ਆਡੀਓ ਨੂੰ ਸਪੀਚ ਸਰਵਿਸ ਨੂੰ REST API ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਸਪੀਚ ਸਰਵਿਸ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ, ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਇੱਕ ਐਕਸੈਸ ਟੋਕਨ ਦੀ ਬੇਨਤੀ ਕਰਨੀ ਪਵੇਗੀ, ਫਿਰ ਉਸ ਟੋਕਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ REST API ਤੱਕ ਪਹੁੰਚ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਇਹ ਐਕਸੈਸ ਟੋਕਨ 10 ਮਿੰਟਾਂ ਬਾਅਦ ਮਿਆਦ ਪੂਰੀ ਕਰ ਲੈਂਦੇ ਹਨ, ਇਸ ਲਈ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਨਿਯਮਿਤ ਤੌਰ 'ਤੇ ਇਹਨਾਂ ਦੀ ਬੇਨਤੀ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ ਕਿ ਇਹ ਹਮੇਸ਼ਾ ਅਪਡੇਟ ਰਹੇ।

ਕੰਮ - ਐਕਸੈਸ ਟੋਕਨ ਪ੍ਰਾਪਤ ਕਰੋ

  1. ਆਪਣੇ Pi 'ਤੇ smart-timer ਪ੍ਰੋਜੈਕਟ ਖੋਲ੍ਹੋ।

  2. play_audio ਫੰਕਸ਼ਨ ਨੂੰ ਹਟਾਓ। ਇਹ ਹੁਣ ਲੋੜੀਂਦਾ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ ਸਮਾਰਟ ਟਾਈਮਰ ਤੁਹਾਡੇ ਕਹੇ ਨੂੰ ਦੁਹਰਾਏ।

  3. app.py ਫਾਈਲ ਦੇ ਸਿਰੇ 'ਤੇ ਹੇਠਾਂ ਦਿੱਤਾ ਗਿਆ ਇਮਪੋਰਟ ਸ਼ਾਮਲ ਕਰੋ:

    import requests
    
  4. while True ਲੂਪ ਤੋਂ ਉੱਪਰ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ ਤਾਂ ਜੋ ਸਪੀਚ ਸਰਵਿਸ ਲਈ ਕੁਝ ਸੈਟਿੰਗਜ਼ ਡਿਕਲੇਅਰ ਕੀਤੀਆਂ ਜਾ ਸਕਣ:

    speech_api_key = '<key>'
    location = '<location>'
    language = '<language>'
    

    <key> ਨੂੰ ਆਪਣੇ ਸਪੀਚ ਸਰਵਿਸ ਰਿਸੋਰਸ ਲਈ API ਕੁੰਜੀ ਨਾਲ ਬਦਲੋ। <location> ਨੂੰ ਉਸ ਸਥਾਨ ਨਾਲ ਬਦਲੋ ਜੋ ਤੁਸੀਂ ਸਪੀਚ ਸਰਵਿਸ ਰਿਸੋਰਸ ਬਣਾਉਣ ਵੇਲੇ ਵਰਤਿਆ ਸੀ।

    <language> ਨੂੰ ਉਸ ਭਾਸ਼ਾ ਦੇ ਲੋਕੇਲ ਨਾਮ ਨਾਲ ਬਦਲੋ ਜਿਸ ਵਿੱਚ ਤੁਸੀਂ ਬੋਲ ਰਹੇ ਹੋ, ਉਦਾਹਰਨ ਲਈ ਅੰਗਰੇਜ਼ੀ ਲਈ en-GB, ਜਾਂ ਕੈਂਟੋਨੀਜ਼ ਲਈ zn-HK। ਤੁਸੀਂ ਮਾਈਕਰੋਸਾਫਟ ਡੌਕਸ 'ਤੇ Language and voice support documentation ਵਿੱਚ ਸਮਰਥਿਤ ਭਾਸ਼ਾਵਾਂ ਅਤੇ ਉਨ੍ਹਾਂ ਦੇ ਲੋਕੇਲ ਨਾਮਾਂ ਦੀ ਸੂਚੀ ਲੱਭ ਸਕਦੇ ਹੋ।

  5. ਇਸ ਤੋਂ ਹੇਠਾਂ, ਐਕਸੈਸ ਟੋਕਨ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਕਰੋ:

    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 ਕੁੰਜੀ ਨੂੰ ਹੈਡਰ ਵਜੋਂ ਭੇਜਦਾ ਹੈ। ਇਹ ਕਾਲ ਇੱਕ ਐਕਸੈਸ ਟੋਕਨ ਵਾਪਸ ਕਰਦੀ ਹੈ ਜੋ ਸਪੀਚ ਸਰਵਿਸ ਨੂੰ ਕਾਲ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ।

  6. ਇਸ ਤੋਂ ਹੇਠਾਂ, ਕੈਪਚਰ ਕੀਤੇ ਗਏ ਆਡੀਓ ਵਿੱਚ ਬੋਲੀ ਨੂੰ REST API ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟੈਕਸਟ ਵਿੱਚ ਬਦਲਣ ਲਈ ਇੱਕ ਫੰਕਸ਼ਨ ਡਿਕਲੇਅਰ ਕਰੋ:

    def convert_speech_to_text(buffer):
    
  7. ਇਸ ਫੰਕਸ਼ਨ ਦੇ ਅੰਦਰ, REST API URL ਅਤੇ ਹੈਡਰ ਸੈਟ ਕਰੋ:

    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 ਨਾਲ ਭਾਸ਼ਾ ਵਾਲੇ ਆਡੀਓ ਦੇ ਪੈਰਾਮੀਟਰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ।

  8. ਇਸ ਤੋਂ ਹੇਠਾਂ, REST API ਨੂੰ ਕਾਲ ਕਰਨ ਅਤੇ ਟੈਕਸਟ ਵਾਪਸ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:

    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 ਹੈ ਤਾਂ ਫੰਕਸ਼ਨ ਤੋਂ ਟੈਕਸਟ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਨਹੀਂ ਤਾਂ ਖਾਲੀ ਸਤਰ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।

  9. while True: ਲੂਪ ਤੋਂ ਉੱਪਰ, ਸਪੀਚ ਤੋਂ ਟੈਕਸਟ ਸਰਵਿਸ ਤੋਂ ਵਾਪਸ ਆਏ ਟੈਕਸਟ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਨ ਲਈ ਇੱਕ ਫੰਕਸ਼ਨ ਡਿਫਾਈਨ ਕਰੋ। ਇਹ ਫੰਕਸ਼ਨ ਇਸ ਵੇਲੇ ਸਿਰਫ ਟੈਕਸਟ ਨੂੰ ਕੰਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਕਰੇਗਾ।

    def process_text(text):
        print(text)
    
  10. ਆਖਿਰ ਵਿੱਚ, while True ਲੂਪ ਵਿੱਚ play_audio ਨੂੰ ਕਾਲ ਕਰਨ ਦੀ ਥਾਂ convert_speech_to_text ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰੋ, ਅਤੇ ਟੈਕਸਟ ਨੂੰ process_text ਫੰਕਸ਼ਨ ਵਿੱਚ ਭੇਜੋ:

    text = convert_speech_to_text(buffer)
    process_text(text)
    
  11. ਕੋਡ ਚਲਾਓ। ਬਟਨ ਦਬਾਓ ਅਤੇ ਮਾਈਕਰੋਫੋਨ ਵਿੱਚ ਬੋਲੋ। ਜਦੋਂ ਤੁਸੀਂ ਖਤਮ ਕਰ ਲਓ, ਬਟਨ ਛੱਡ ਦਿਓ, ਅਤੇ ਆਡੀਓ ਟੈਕਸਟ ਵਿੱਚ ਬਦਲਿਆ ਜਾਵੇਗਾ ਅਤੇ ਕੰਸੋਲ 'ਤੇ ਪ੍ਰਿੰਟ ਹੋਵੇਗਾ।

    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 ਫੋਲਡਰ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ।

😀 ਤੁਹਾਡਾ ਸਪੀਚ ਤੋਂ ਟੈਕਸਟ ਪ੍ਰੋਗਰਾਮ ਸਫਲ ਰਿਹਾ!


ਅਸਵੀਕਰਤੀ:
ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ Co-op Translator ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਵਿੱਚ ਰੱਖੋ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁਚੀਤਤਾਵਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।