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/3-spoken-feedback/virtual-device-text-to-spee...

8.5 KiB

ਟੈਕਸਟ ਤੋਂ ਬੋਲਣ ਤੱਕ - ਵਰਚੁਅਲ IoT ਡਿਵਾਈਸ

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

ਟੈਕਸਟ ਨੂੰ ਬੋਲਣ ਵਿੱਚ ਬਦਲੋ

ਪਿਛਲੇ ਪਾਠ ਵਿੱਚ ਤੁਸੀਂ ਜੋ ਬੋਲਣ ਸੇਵਾਵਾਂ SDK ਬੋਲਣ ਨੂੰ ਟੈਕਸਟ ਵਿੱਚ ਬਦਲਣ ਲਈ ਵਰਤੀ ਸੀ, ਉਸੇ SDK ਦੀ ਵਰਤੋਂ ਟੈਕਸਟ ਨੂੰ ਵਾਪਸ ਬੋਲਣ ਵਿੱਚ ਬਦਲਣ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਬੋਲਣ ਦੀ ਬੇਨਤੀ ਕਰਦੇ ਸਮੇਂ, ਤੁਹਾਨੂੰ ਉਹ ਆਵਾਜ਼ ਪ੍ਰਦਾਨ ਕਰਨੀ ਪਵੇਗੀ ਜੋ ਵਰਤਣੀ ਹੈ, ਕਿਉਂਕਿ ਬੋਲਣ ਵੱਖ-ਵੱਖ ਆਵਾਜ਼ਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਤਿਆਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

ਹਰ ਭਾਸ਼ਾ ਵੱਖ-ਵੱਖ ਆਵਾਜ਼ਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦੀ ਹੈ, ਅਤੇ ਤੁਸੀਂ ਹਰ ਭਾਸ਼ਾ ਲਈ ਸਮਰਥਿਤ ਆਵਾਜ਼ਾਂ ਦੀ ਸੂਚੀ ਬੋਲਣ ਸੇਵਾਵਾਂ SDK ਤੋਂ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ।

ਕੰਮ - ਟੈਕਸਟ ਨੂੰ ਬੋਲਣ ਵਿੱਚ ਬਦਲੋ

  1. smart-timer ਪ੍ਰੋਜੈਕਟ ਨੂੰ VS Code ਵਿੱਚ ਖੋਲ੍ਹੋ, ਅਤੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਵਰਚੁਅਲ ਵਾਤਾਵਰਣ ਟਰਮੀਨਲ ਵਿੱਚ ਲੋਡ ਹੈ।

  2. azure.cognitiveservices.speech ਪੈਕੇਜ ਤੋਂ SpeechSynthesizer ਨੂੰ ਮੌਜੂਦਾ ਇੰਪੋਰਟਸ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਕੇ ਇੰਪੋਰਟ ਕਰੋ:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. say ਫੰਕਸ਼ਨ ਤੋਂ ਉੱਪਰ, ਬੋਲਣ ਸਿੰਥਸਾਈਜ਼ਰ ਨਾਲ ਵਰਤਣ ਲਈ ਇੱਕ ਬੋਲਣ ਸੰਰਚਨਾ ਬਣਾਓ:

    speech_config = SpeechConfig(subscription=speech_api_key,
                                 region=location)
    speech_config.speech_synthesis_language = language
    speech_synthesizer = SpeechSynthesizer(speech_config=speech_config)
    

    ਇਹ ਉਹੀ API ਕੁੰਜੀ, ਸਥਾਨ ਅਤੇ ਭਾਸ਼ਾ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ ਜੋ ਪਛਾਣਕਰਤਾ ਦੁਆਰਾ ਵਰਤੀ ਗਈ ਸੀ।

  4. ਇਸ ਤੋਂ ਹੇਠਾਂ, ਇੱਕ ਆਵਾਜ਼ ਪ੍ਰਾਪਤ ਕਰਨ ਅਤੇ ਇਸਨੂੰ ਬੋਲਣ ਸੰਰਚਨਾ 'ਤੇ ਸੈਟ ਕਰਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਸ਼ਾਮਲ ਕਰੋ:

    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
    

    ਇਹ ਸਾਰੀਆਂ ਉਪਲਬਧ ਆਵਾਜ਼ਾਂ ਦੀ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਫਿਰ ਉਹ ਪਹਿਲੀ ਆਵਾਜ਼ ਲੱਭਦਾ ਹੈ ਜੋ ਵਰਤੀ ਜਾ ਰਹੀ ਭਾਸ਼ਾ ਨਾਲ ਮੇਲ ਖਾਂਦੀ ਹੈ।

    💁 ਤੁਸੀਂ ਮਾਈਕਰੋਸਾਫਟ ਡੌਕਸ 'ਤੇ ਭਾਸ਼ਾ ਅਤੇ ਆਵਾਜ਼ ਸਮਰਥਨ ਦਸਤਾਵੇਜ਼ ਤੋਂ ਸਮਰਥਿਤ ਆਵਾਜ਼ਾਂ ਦੀ ਪੂਰੀ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਖਾਸ ਆਵਾਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਇਸ ਫੰਕਸ਼ਨ ਨੂੰ ਹਟਾ ਸਕਦੇ ਹੋ ਅਤੇ ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਦਿੱਤੇ ਆਵਾਜ਼ ਦੇ ਨਾਮ ਨਾਲ ਆਵਾਜ਼ ਨੂੰ ਹਾਰਡ ਕੋਡ ਕਰ ਸਕਦੇ ਹੋ। ਉਦਾਹਰਣ ਲਈ:

    speech_config.speech_synthesis_voice_name = 'hi-IN-SwaraNeural'
    
  5. say ਫੰਕਸ਼ਨ ਦੀ ਸਮੱਗਰੀ ਨੂੰ SSML ਤਿਆਰ ਕਰਨ ਲਈ ਅਪਡੇਟ ਕਰੋ:

    ssml =  f'<speak version=\'1.0\' xml:lang=\'{language}\'>'
    ssml += f'<voice xml:lang=\'{language}\' name=\'{first_voice.short_name}\'>'
    ssml += text
    ssml += '</voice>'
    ssml += '</speak>'
    
  6. ਇਸ ਤੋਂ ਹੇਠਾਂ, ਬੋਲਣ ਪਛਾਣ ਨੂੰ ਰੋਕੋ, SSML ਬੋਲੋ, ਫਿਰ ਪਛਾਣ ਨੂੰ ਮੁੜ ਸ਼ੁਰੂ ਕਰੋ:

    recognizer.stop_continuous_recognition()
    speech_synthesizer.speak_ssml(ssml)
    recognizer.start_continuous_recognition()
    

    ਪਛਾਣ ਨੂੰ ਰੋਕਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਟੈਕਸਟ ਬੋਲਿਆ ਜਾ ਰਿਹਾ ਹੋਵੇ ਤਾਂ ਜੋ ਟਾਈਮਰ ਸ਼ੁਰੂ ਹੋਣ ਦੀ ਘੋਸ਼ਣਾ ਪਛਾਣੀ ਨਾ ਜਾਵੇ, LUIS ਨੂੰ ਭੇਜੀ ਨਾ ਜਾਵੇ ਅਤੇ ਸੰਭਵ ਤੌਰ 'ਤੇ ਇਸਨੂੰ ਨਵਾਂ ਟਾਈਮਰ ਸੈਟ ਕਰਨ ਦੀ ਬੇਨਤੀ ਵਜੋਂ ਵਿਆਖਿਆ ਨਾ ਕੀਤਾ ਜਾਵੇ।

    💁 ਤੁਸੀਂ ਪਛਾਣ ਨੂੰ ਰੋਕਣ ਅਤੇ ਮੁੜ ਸ਼ੁਰੂ ਕਰਨ ਵਾਲੀਆਂ ਲਾਈਨਾਂ ਨੂੰ ਕਮੈਂਟ ਕਰਕੇ ਇਸਨੂੰ ਟੈਸਟ ਕਰ ਸਕਦੇ ਹੋ। ਇੱਕ ਟਾਈਮਰ ਸੈਟ ਕਰੋ, ਅਤੇ ਤੁਸੀਂ ਦੇਖ ਸਕਦੇ ਹੋ ਕਿ ਘੋਸ਼ਣਾ ਇੱਕ ਨਵਾਂ ਟਾਈਮਰ ਸੈਟ ਕਰਦੀ ਹੈ, ਜੋ ਇੱਕ ਨਵੀਂ ਘੋਸ਼ਣਾ ਕਰਦਾ ਹੈ, ਜੋ ਇੱਕ ਨਵਾਂ ਟਾਈਮਰ ਸੈਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਹ ਸਦਾ ਲਈ ਚਲਦਾ ਰਹਿੰਦਾ ਹੈ!

  7. ਐਪ ਚਲਾਓ, ਅਤੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਫੰਕਸ਼ਨ ਐਪ ਵੀ ਚਲ ਰਹੀ ਹੈ। ਕੁਝ ਟਾਈਮਰ ਸੈਟ ਕਰੋ, ਅਤੇ ਤੁਸੀਂ ਇੱਕ ਬੋਲੀ ਗਈ ਪ੍ਰਤੀਕ੍ਰਿਆ ਸੁਣੋਗੇ ਜੋ ਕਹੇਗੀ ਕਿ ਤੁਹਾਡਾ ਟਾਈਮਰ ਸੈਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਫਿਰ ਇੱਕ ਹੋਰ ਬੋਲੀ ਗਈ ਪ੍ਰਤੀਕ੍ਰਿਆ ਜਦੋਂ ਟਾਈਮਰ ਪੂਰਾ ਹੋ ਜਾਵੇਗਾ।

💁 ਤੁਸੀਂ ਇਹ ਕੋਡ code-spoken-response/virtual-iot-device ਫੋਲਡਰ ਵਿੱਚ ਲੱਭ ਸਕਦੇ ਹੋ।

😀 ਤੁਹਾਡਾ ਟਾਈਮਰ ਪ੍ਰੋਗਰਾਮ ਸਫਲ ਰਿਹਾ!


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