Vaja คือ ระบบสังเคราะห์เสียงพูดภาษาไทย หรือ ระบบแปลงข้อความภาษาไทยให้เป็นเสียงพูด โดยมีเวอร์ชันล่าสุดคือ วาจาเวอร์ชัน 9.0 เพื่อเป็นผู้ช่วยเหล่าเมกเกอร์และนักพัฒนาซอฟต์แวร์ในการสร้างไลบรารี (Library)
- เสียงสังเคราะห์เลือกได้ 4 เสียง ได้แก่ เสียงผู้ชาย, เสียงผู้หญิง, เสียงเด็กผู้ชาย และเสียงเด็กผู้หญิง
- ข้อความระบุได้ทั้งแบบรูปเขียน (grapheme) และรูปเสียง (phoneme)
- สามารถเลือกได้ว่าจะให้โมเดลเว้นวรรคให้ หรือผู้ใช้ทำหน้าที่เว้นวรรคด้วยตนเอง
- ผลลัพธ์แสดงได้ทั้งเสียง และภาพ โดยสามารถใช้งานร่วมกับโมเดล 3 มิติที่รองรับ ARKit Blendshape หรือ VRM Blendshape ตัวอย่างเช่นโมเดลจาก ReadyPlayerMe และ VRoid
การสังเคราะห์เสียงผู้ชาย, ผู้หญิง, เด็กผู้ชาย และเด็กผู้หญิงโดยใช้ภาษาจาวาบน Colab
1. เริ่มจากการระบุ Apikey
Apikey = input("ให้ทำการใส่ Apikey:")
print(f'คุณได้ใส่ {Apikey}:')
2. ระบุ Vaja9 API
url = 'https://api.aiforthai.in.th/vaja9/synth_audiovisual'
3. ระบุข้อความที่ต้องการสร้างเสียงสังเคราะห์
text = input("ให้เขียนสิ่งที่ต้องการจะพูด")
4. เลือกเสียงที่ต้องการ
from ipywidgets import Select, HBox, Label
from IPython.display import display
supported_voice_gen = ["Phoom (ผู้ชาย)", "NamPhueng (ผู้หญิง)", "Pop (เด็ก)", "Pim (เด็กผู้หญิง)"]
print("กรุณาเลือกเสียงที่ต้องการใช้ในการทดสอบ")
voice_select = Select(options=supported_voice_gen, value=None)
display(HBox([voice_select]))
speaker = voice_select.index
speaker_type = voice_select.value
if speaker is None:
speaker = -1
speaker_type = "robot"
print("speaker("+speaker_type+"): "+str(speaker))
5. สังเคราะห์เสียงพูด
import requests
headers = {'Apikey':Apikey,"Content-Type": "application/json"}
data = {'input_text':text,'speaker': speaker}
response = requests.post(url, json=data, headers=headers)
print(response.json())
6. ดาวน์โหลดผลลัพธ์ และฟังเสียง
import IPython
def download_and_play(sWav_url):
with open('test.wav', 'wb') as a:
resp = requests.get(sWav_url,headers={'Apikey':Apikey})
if resp.status_code == 200:
a.write(resp.content)
print('Downloaded: '+response.json()['wav_url'])
IPython.display.display(IPython.display.Audio('test.wav'))
else:
print(resp.reason)
exit(1)
if(response.json()['msg'] == 'success'):
download_and_play(response.json()['wav_url'])
การสังเคราะห์เสียง ที่เว้นวรรคแบบอัตโนมัติ และกำหนดเอง
text = 'ทดสอบโปรแกรมการสังเคราะห์เสียงพูดแบบเว้นวรรคโดยอัตโนมัติในการเผยแพร่องค์ความรู้ในมหาวิทยาลัยแม่โจ้'
# ทำการเว้นวรรคแบบอัตโนมัติ
iPhrase_break=0
data = {'input_text':text,'speaker': 0, 'phrase_break':iPhrase_break, 'audiovisual':0}
response = requests.post(url, json=data, headers=headers)
print(response.json())
if(response.json()['msg'] == 'success'):
download_and_play(response.json()['wav_url'])
การสังเคราะห์เสียงแบบระบุข้อความที่ใช้รูปเขียน(graphemes) และรูปเสียง(phonemes)
# การระบุรูปเสียงให้ระบุ phones ที่ต้องการ ให้อยู่ภายในวงเล็บแบบปีกกา
text = 'นี่คือการ {th o3 t^ s @@1 p^ sp}วาจาเวอร์ชันใหม่ ที่สามารถป้อนได้ทั้งรูปเขียน และรูปเสียง'
data = {'input_text':text,'speaker': 0, 'phrase_break':0, 'audiovisual':0}
response = requests.post(url, json=data, headers=headers)
print(response.json())
if(response.json()['msg'] == 'success'):
download_and_play(response.json()['wav_url'])