8.2 KiB
Text to speech - อุปกรณ์ IoT เสมือนจริง
ในส่วนนี้ของบทเรียน คุณจะเขียนโค้ดเพื่อแปลงข้อความเป็นเสียงโดยใช้บริการเสียงพูด
แปลงข้อความเป็นเสียง
SDK ของบริการเสียงพูดที่คุณใช้ในบทเรียนก่อนหน้าเพื่อแปลงเสียงพูดเป็นข้อความ สามารถใช้เพื่อแปลงข้อความกลับเป็นเสียงพูดได้เช่นกัน เมื่อร้องขอเสียงพูด คุณจำเป็นต้องระบุเสียงที่จะใช้ เนื่องจากเสียงพูดสามารถสร้างได้จากเสียงที่หลากหลาย
แต่ละภาษารองรับเสียงที่แตกต่างกัน และคุณสามารถดูรายการเสียงที่รองรับสำหรับแต่ละภาษาได้จาก SDK ของบริการเสียงพูด
งาน - แปลงข้อความเป็นเสียง
-
เปิดโปรเจกต์
smart-timer
ใน VS Code และตรวจสอบให้แน่ใจว่าสภาพแวดล้อมเสมือนถูกโหลดในเทอร์มินัล -
นำเข้า
SpeechSynthesizer
จากแพ็กเกจazure.cognitiveservices.speech
โดยเพิ่มลงในส่วนการนำเข้าที่มีอยู่:from azure.cognitiveservices.speech import SpeechConfig, SpeechRecognizer, SpeechSynthesizer
-
เหนือฟังก์ชัน
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
-
ด้านล่างนี้ เพิ่มโค้ดต่อไปนี้เพื่อรับเสียงและตั้งค่าใน 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'
-
อัปเดตเนื้อหาของฟังก์ชัน
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>'
-
ด้านล่างนี้ หยุดการรับรู้เสียงพูด พูด SSML จากนั้นเริ่มการรับรู้ใหม่อีกครั้ง:
recognizer.stop_continuous_recognition() speech_synthesizer.speak_ssml(ssml) recognizer.start_continuous_recognition()
การรับรู้จะถูกหยุดในขณะที่ข้อความถูกพูดเพื่อหลีกเลี่ยงการที่การประกาศการเริ่มต้นตัวจับเวลาถูกตรวจจับ ส่งไปยัง LUIS และอาจถูกตีความว่าเป็นคำขอในการตั้งค่าตัวจับเวลาใหม่
💁 คุณสามารถทดสอบสิ่งนี้ได้โดยการคอมเมนต์บรรทัดที่หยุดและเริ่มการรับรู้ใหม่ ตั้งค่าตัวจับเวลา และคุณอาจพบว่าการประกาศตั้งค่าตัวจับเวลาใหม่ ซึ่งทำให้เกิดการประกาศใหม่ นำไปสู่การตั้งค่าตัวจับเวลาใหม่ และวนซ้ำไปเรื่อยๆ!
-
รันแอป และตรวจสอบให้แน่ใจว่าแอปฟังก์ชันกำลังทำงานอยู่ ตั้งค่าตัวจับเวลา และคุณจะได้ยินการตอบสนองด้วยเสียงพูดที่บอกว่าตัวจับเวลาของคุณถูกตั้งค่าแล้ว จากนั้นจะมีการตอบสนองด้วยเสียงพูดอีกครั้งเมื่อตัวจับเวลาสิ้นสุด
💁 คุณสามารถค้นหาโค้ดนี้ได้ในโฟลเดอร์ code-spoken-response/virtual-iot-device
😀 โปรแกรมตัวจับเวลาของคุณประสบความสำเร็จ!
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้องมากที่สุด แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้