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

8.2 KiB

Text to speech - อุปกรณ์ IoT เสมือนจริง

ในส่วนนี้ของบทเรียน คุณจะเขียนโค้ดเพื่อแปลงข้อความเป็นเสียงโดยใช้บริการเสียงพูด

แปลงข้อความเป็นเสียง

SDK ของบริการเสียงพูดที่คุณใช้ในบทเรียนก่อนหน้าเพื่อแปลงเสียงพูดเป็นข้อความ สามารถใช้เพื่อแปลงข้อความกลับเป็นเสียงพูดได้เช่นกัน เมื่อร้องขอเสียงพูด คุณจำเป็นต้องระบุเสียงที่จะใช้ เนื่องจากเสียงพูดสามารถสร้างได้จากเสียงที่หลากหลาย

แต่ละภาษารองรับเสียงที่แตกต่างกัน และคุณสามารถดูรายการเสียงที่รองรับสำหรับแต่ละภาษาได้จาก SDK ของบริการเสียงพูด

งาน - แปลงข้อความเป็นเสียง

  1. เปิดโปรเจกต์ smart-timer ใน VS Code และตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเสมือนถูกโหลดในเทอร์มินัล

  2. นำเข้า SpeechSynthesizer จากแพ็กเกจ azure.cognitiveservices.speech โดยเพิ่มลงในส่วนการนำเข้าที่มีอยู่:

    from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
    
  3. เหนือฟังก์ชัน say สร้างการตั้งค่าการพูดเพื่อใช้กับ speech synthesizer:

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

    การตั้งค่านี้ใช้ API key, location และ language เดียวกันกับที่ใช้โดย recognizer

  4. ด้านล่างนี้ เพิ่มโค้ดต่อไปนี้เพื่อรับเสียงและตั้งค่าใน speech config:

    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
    

    โค้ดนี้ดึงรายการเสียงทั้งหมดที่มีอยู่ จากนั้นค้นหาเสียงแรกที่ตรงกับภาษาที่กำลังใช้งาน

    💁 คุณสามารถดูรายการเสียงที่รองรับทั้งหมดได้จาก เอกสาร Language and voice support บน Microsoft Docs หากคุณต้องการใช้เสียงเฉพาะ คุณสามารถลบฟังก์ชันนี้และกำหนดเสียงโดยตรงด้วยชื่อเสียงจากเอกสารนี้ ตัวอย่างเช่น:

    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 แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้