ก่อนที่เราจะไปทำการเขียนโปรแกรมแปลภาษาเรามารู้จักกับเครื่องมือและบริการที่จะใช้ก่อนครับผม 😊
Azure Speech Service คืออะไร
Azure Speech Service เป็นอีกบริการหนึ่งในคลาวด์ Microsoft Azure ที่มีความสามารถเกี่ยวกับการแปลงเสียงพูดเป็นข้อความ ข้อความเป็นเสียงพูดสังเคราะห์ ตลอดจนไปถึงการแปลภาษา ซึ่งรองรับหลากหลายภาษา เราสามารถนำ Speech SDK ไปใช้ในการเริ่มเขียนโปรแกรมแปลภาษาได้อย่างง่ายดายและรวดเร็วอีกด้วย
เขียนโดย
Sirasit Boonklang – BorntoDev Co., Ltd.
ก่อนอื่นเราต้องมีสิ่งที่เรียกว่า Azure Subscription ก่อนนะครับถึงจะใช้งาน Azure Speech Service ได้สามารถดูวิธีการสมัครและใช้งาน Microsoft Azure เบื้องต้นได้ที่ https://www.borntodev.com/2021/08/31/what-is-microsoft-azure/
เริ่มต้นเขียนโปรแกรมแปลภาษา 🚀
1.หากในเครื่องยังไม่ได้ติดตั้ง Python สามารถดาวน์โหลดและติดตั้ง Python ได้ที่ Download Python | Python.org
2.ต่อมาให้ดาวน์โหลด Speech SDK Python Package โดยการเปิด command prompt แล้วใช้คำสั่ง pip install azure-cognitiveservices-speech
3.สร้าง Azure resource สำหรับใช้บริการ Azure Speech Service
เมื่อสมัคร Azure แล้วให้ไปที่ https://portal.azure.com/ แล้วคลิกที่ Create a Resource
4.ไปที่ช่องค้นหาแล้วพิมพ์ว่า Speech
5.จะพบกับหน้าสำหรับสร้างบริการ Speech บน Azure โดยจะเป็นบริการสำหรับถอดเสียงคำพูดเป็นข้อความ แปลคำพูดแบบเรียลไทม์ แปลงข้อความเป็นเสียงแบบเกือบเรียลไทม์ (จะมีระยะเวลาในการประมวลผลนิดนึงครับ) ถ้าพร้อมแล้วก็กด Create ได้เลยครับ
6.ตั้งค่าต่างๆของบริการโดยแต่ละส่วนจะมีรายละเอียดดังนี้
- Name เป็นการตั้งชื่อบริการ speech ของเรา
- Subscription เป็นส่วนที่เราสมัครไว้ว่าจะเลือกคิดเครดิตจาก Subscription ไหน
- Location เลือกว่าบริการของเราจะไปใช้ Data Center ที่ภูมิภาคไหน
- Pricing tier คือแพลนราคาของบริการมีทั้งฟรีและเสียเครดิต สามารถดูรายละเอียดเพิ่มเติมได้ที่ Cognitive Speech Services Pricing | Microsoft Azure
- Resource group (เป็นเหมือนโฟลเดอร์สำหรับเก็บบริการต่างๆที่เกี่ยวข้องกับโปรเจคนี้บน Azure)
7.เมื่อบริการถูกสร้างเสร็จสามารถกดปุ่ม Go to resource ได้เลย
8.จะพบกับหน้า Overview ให้ไปที่ Keys and Enpoint
9.เมื่อมายังหน้า Keys and Endpoint ให้ทำการ Copy KEY 1 หรือ KEY 2 ก็ได้เอาไว้และทำการ Copy Location/Region
10.เปิด IDE สำหรับเขียน python ในบทความนี้จะใช้เป็น Visual Studio Code นะครับ
เมื่อเปิดขึ้นมาแล้วให้เราสร้างไฟล์ .py ขึ้นมาแล้ว โดยส่วนแรกเราจะเริ่มจากให้โปรแกรมสามารถแปลงเสียงพูดเป็นข้อความภาษาไทย โดยใช้ speech sdk ของ Azure
#เรียกใช้งาน speech sdk
import azure.cognitiveservices.speech as speechsdk
#สร้างฟังก์ชั่นสำหรับรับเสียงพูดจากไมค์แล้วแปลงเป็นข้อความ
def Speech_Recognition_from_mic():
#ตั้งค่า subscription key และ location ของบริการ Azure Speech Service
speech_config = speechsdk.SpeechConfig(subscription="คีย์ที่นำมาจาก Azure", region="ชื่อ location")
#ตั้งค่าภาษาที่ต้องการแปลงเสียงพูดเป็นข้อความ
speech_config.speech_recognition_language="th-TH" speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config) print("สามารถพูดได้เลยครับ") result = speech_recognizer.recognize_once_async().get() print("คุณพูดว่า: "+result.text)
#เรียกใช้งานฟังก์ชั่นรับเสียงพูดจากไมค์แล้วแปลงเป็นข้อความ
Speech_Recognition_from_mic()
11.เสร็จแล้วสามารถลองรันและพูดทดสอบได้เลย
จะเห็นได้ว่าตอนนี้โปรแกรมสามารถแปลงเสียงพูดเป็นข้อความได้แล้ว แต่ยังไม่สามารถแปลภาษาได้ ขั้นตอนต่อไปเราจะมาทำให้โปรแกรมสามารถแปลเป็นภาษาอื่นๆได้ครับ
12.สร้างฟังก์ชั่นในการแปลภาษา โดยการนำ speech_key และ service_region จากที่เราได้สร้างไวมาใส่ได้เลย
def translation():
speech_key, service_region = "คีย์ที่นำมาจาก Azure", "ชื่อ location"
#ตั้งค่าภาษาเริ่มต้นและภาษาที่ต้องการแปล
translation_config = speechsdk.translation.SpeechTranslationConfig( subscription=speech_key, region=service_region,
#ภาษาเริ่มที่ใช้เป็นภาษาไทย
speech_recognition_language='th-TH',
#ภาษาที่จะแปลออกมา ณ ที่นี้เราจะให้แปลเป็นทั้งภาษาอังกฤษ ภาษาจีน และภาษาญี่ปุ่น
target_languages=('en', 'zh-Hans', 'ja'))
#ตั้งค่าการรับเสียงจากไมโครโฟน
audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True) recognizer = speechsdk.translation.TranslationRecognizer( translation_config=translation_config, audio_config=audio_config) result = recognizer.recognize_once()
#ตรวจสอบผลลัพธ์
if result.reason == speechsdk.ResultReason.TranslatedSpeech: print("""คุณพูดว่า: {} ภาษาอังกฤษคือ: {} ภาษาจีนคือ: {} ภาษาญี่ปุ่นคือ: {}""".format( result.text, result.translations['en'], result.translations['zh-Hans'], result.translations['ja'],)) elif result.reason == speechsdk.ResultReason.RecognizedSpeech: print("Recognized: {}".format(result.text)) elif result.reason == speechsdk.ResultReason.NoMatch: print("No speech could be recognized: {}".format(result.no_match_details)) elif result.reason == speechsdk.ResultReason.Canceled: print("Translation canceled: {}".format(result.cancellation_details.reason)) if result.cancellation_details.reason == speechsdk.CancellationReason.Error: print("Error details: {}".format(result.cancellation_details.error_details))
#เรียกใช้งานฟังก์ชั่นแปลภาษา
translation()
13.เมื่อทำการเขียนโค้ดเสร็จแล้วสามารถทำการรันแล้วลองพูดได้เลย
หากเพื่อน ๆ ต้องการให้แปลเป็นภาษาอื่น ๆ สามารถเลือกใช้ได้จากลิงก์นี้เลยครับผม 😊
Language support – Translator – Azure Cognitive Services | Microsoft Docs