สิ่งที่จะต้องมี 1. Script Lua ของ Pro ภาษาไหนก็ได้ ( ที่ผมใช้ พอดีหาภาษาอังกฤษได้เลยเอามาใช้)
2. Text Edit ดี ดีซักตัว แนะนำใช้ notepad++
3. มีความสามารถแปลภาษาอังกฤษได้ดี จะทำให้ทำได้เร็วขึ้น
4. ทำความเข้าใจ script ในส่วนที่จะต้องแปล และส่วนที่ เป็นค่าตัวแปล ( เดี๋ยวจะยกตัวอย่าง)
5. ชุด voice_model เสียง แบบ dri40_155mrf22 ที่ต้องมี จริง ๆ แล้วไฟล์เสียง synth_Narisa_dri40_vssq5_f22.dat นี้ จะมี model ทั้ง
dri40_155mrf22 และ dri40_vssq5_f22 ในไฟล์อยู่แล้ว แค่ rename ให้ถูกต้อง และกำหนดค่าใน info.ini ให้เปิดใช้ LUA และ voice model ให้ถูก และมีไฟล์ .hdr ที่ถูกต้องก็ใช้งานได้ เนืองจาก เห็น TTS Pro เมืองนอกใช้ MRF22 ในการจัดทำผมจึงทดสอบแบบ MRF22 เท่านั้นในการหาวิธีทำเสียง TTS Lua หรือ PRO
6. ไฟล์ VAUTOV5.dll ใช้ตัว 1.8M ( ตัวเก่านะครับ) เพราะ .dat ที่เรานำมาใช้ จะเข้ากันได้กับ VAUTOV5.dll ตัว 1.8M
7. ความขยัน (ซึ่งผมไม่มี เพราะงานมากอยู่ครับ :-D )
Video ตัวอย่าง ที่ทำการทดสอบ Ver 0.01
Video ตัวอย่าง ที่ทำการทดสอบ Ver 0.1
http://www.navthai.com/smf/index.php?topic=9482.msg75698#msg75698
วิธีแก้ไขชุดคำแปลใน ไฟล์ .Lua
ตัวอย่าง จาก Primo2.0\Content\VOICE\Voice_TTS-nua-tha-f1-dri40-155mf-22.zip : \config\config\config_database.lua
แบบที่ 1parameters = {
[id.continue_left] = {then_cnt = 1, CID = 7101463, L"left", L"left,", L"left."},
จากตัวอย่าง จะเห็นว่าใน บรรทัด script จะมี L" ซึ่งเป็นตัวประกาศว่าหลัง L" คือคำที่ระบบจะนำมาอ่าน ในที่นี้ ก็คือ left ก็ให้แก้เป็น ซ้าย เท่านั้นเองครับ
parameters = {
[id.continue_left] = {then_cnt = 1, CID = 7101463, L"ซ้าย", L"ซ้าย,", L"ซ้าย."},
แบบที่ 2 ในบรรทัดมีการเก็บอ้างค่าตัวแปลด้วยเช่น
L"อีก %dist2 เลี้ยว %2 %destname . %then1",
จากตัวอย่างอย่างจะเห็นได้ว่า หลัง L" จะเป็นคำที่เราจะแปลเป็นไทย แต่ มี % นำหน้าตัวอักษรบางตัว ซึ่ง คำเหล่านั้น ไม่ต้องแปล เพราะจะเป็นค่าตัวแปลที่รับจากส่วนโปรแกรมเอง ให้คงไว้ดังเดิม
สรุปส่วนที่ต้องแปล ก็มี 2 ส่วน
1. Primo2\Content\VOICE\Voice_TTS-nua-tha-f1-dri40-155mf-22.zip : \config\config\ แปลทุกไฟล์.lua ตามที่ได้อธิบายไว้ด้านบน
2. Primo2\content\voice\Voice_TTS-nua-tha-f1-dri40-155mf-22.zip : \i18n\dictionary.voice อันนี้แปลตรงไปตรงมา คือแปลข้อความลัง =
หลักการก็มีเท่านี้เองครับ ส่วนที่เหลือก็ความขยัน แปล ขยังลอง ละครับ
ส่วนประกอบที่ต้องแก้ไขเพื่อให้ ออกเสียงได้ Primo2\content\voice\Voice_TTS-nua-tha-f1-dri40-155mf-22.zip : \info.ini
[INFO]
;TTS Nuance v5
voicekey="tts_nua_tha_f2"
languagekey="thai"
languagename="ภาษาไทย TTS Pro"
lang_extention_flag=""
cmlangkey="Voice_Thai"
sex="female"
name="Narisa (TTS) Lua Pro Beta 0.01"
flag="flag_tha.bmp"
testsound=""
unitssup_kmm=1
unitssup_mly=1
unitssup_mlf=1
tmcsup=1
luavoice=1
tts_destnames=1
phoneme_lang="THA"
ttsvoice=1
tts_engine="nuance_v5"
voice_model="dri40_155mrf22"
nua_v5_lang_dir="tht"
;apdb_filename="apdb_Samantha_NNG.dat"
tts_rate="100"
tts_srate="22050"
tts_mode_mixed=0
roadnameparsing=-1
tts_langname="ภาษาไทย"
tts_voicename="Narisa"
recalulate="กำลังคำนวณเส้นทางใหม่."
ask_recalulate="คำนวณเส้นทางใหม่?"
offroute="ออกนอกเส้นทาง!"
traffic_jam="ข้างหน้าการจราจรติดขัด."
overspeed="ความเร็วของคุณเกินกำหนด."
gps_signal_lost="กำลังค้นหาสัญญาณดาวเทียม."
gps_disconnect="ไม่พบสัญญาณดาวเทียม."
tts_eta="คุณจะถึงจุดหมายในอีก \number=time %I:%M %p"
LCID=0x041e
brand="iGO_Primo"
timestamp="1244019472"
timestamp_readable="2009. 06. 03. 8:57:52"
;ORG script TTS Thai By trex_ln @ navthai.com
ไฟล์ที่ต้อง Rename
จาก : synth_Narisa_dri40_vssq5_f22.dat
เป็น : synth_Narisa_dri40_155mrf22_270_06.dat
ไฟล์ที่ต้องมี vauto_pipeline_tht_Narisa_22_dri40_155mrf22.hdr
<?xml version="1.0"?>
<NUANCE>
<VERSION>NUAN_1.0</VERSION>
<HEADER>
<BROKERSTRING>pipeline/Thai/narisa/22/dri40_155mrf22/text/pcm</BROKERSTRING>
<PRIORITY>4212</PRIORITY>
<PARAMETERS>
<language>Thai</language>
<langcode>THT</langcode>
<langid>33</langid>
<langversion>5.2.0.8232</langversion>
<nativetypeofchar>utf-16</nativetypeofchar>
<voice>Narisa</voice>
<voiceversion>5.2.0.8294</voiceversion>
<gender>Female</gender>
<age>Adult</age>
<fecfg>cfg1</fecfg>
<frequencyhz>22050</frequencyhz>
<voicemodel>dri40_155mrf22</voicemodel>
<reduction>dri40</reduction>
<coder>155mrf22</coder>
<bitrate>270</bitrate>
<overheadframes>06</overheadframes>
<audiooutputmimetype>audio/L16;rate=22050</audiooutputmimetype>
<audiooutputsamplebits>16</audiooutputsamplebits>
</PARAMETERS>
<OBJECTS>
<AUDIOFETCHER>audiofetch</AUDIOFETCHER>
<DCTEG>dcteg</DCTEG>
<DOMAINMNGR>domain_mngr</DOMAINMNGR>
<FE_DCTLKP>fe/fe_dctlkp</FE_DCTLKP>
<FE_DEPES>fe/fe_depes</FE_DEPES>
<FE_UDWL>fe/fe_udwl</FE_UDWL>
<INET>inetspi</INET>
<PHONMAP>phonmap</PHONMAP>
</OBJECTS>
<COMPONENTS>
<COMPONENT>xcoder</COMPONENT>
<COMPONENT>ttt/re</COMPONENT>
<COMPONENT>pp/text</COMPONENT>
<COMPONENT>fe/fe_initlingdb</COMPONENT>
<COMPONENT>fe/fe_promptorth</COMPONENT>
<COMPONENT>fe/tokentn</COMPONENT>
<COMPONENT>fe/fe_abbrtn</COMPONENT>
<COMPONENT>fe/fe_puncsptn</COMPONENT>
<COMPONENT>fe/fe_oneword</COMPONENT>
<COMPONENT>fe/fe_pos</COMPONENT>
<COMPONENT>fe/fe_hmogrph</COMPONENT>
<COMPONENT>fe/fe_phrasing</COMPONENT>
<COMPONENT>fe/fe_normout</COMPONENT>
<COMPONENT>fe/fe_prompt</COMPONENT>
<COMPONENT>fe/fe_global</COMPONENT>
<COMPONENT>fe/fe_deinitlingdb</COMPONENT>
<COMPONENT>uselect/bet1</COMPONENT>
<COMPONENT>synth/bet1</COMPONENT>
<COMPONENT>audioinserter</COMPONENT>
<COMPONENT>phonmap/mrk</COMPONENT>
<COMPONENT>xcoder/mrksync</COMPONENT>
</COMPONENTS>
<RESOURCES>
<!-- The next entry specifies a broker string for the user dict -->
<RESOURCE content-type="application/edct-bin-dictionary;loader=broker">
userdct/tht
</RESOURCE>
</RESOURCES>
</HEADER>
</NUANCE>
หมายเหตุ1. การทดสอบทำบน emulator ยังไม่ได้วิ่งจริง
2. การทดสอบทดสอบเพื่อให้อ่าน script Lua ได้หรือไม่
3. ชุดที่เห็นเป็นเพียง beta test ของผม เพือที่จะทดสอบต่อไปว่าใช้งานจริงหรือไม่ ( ไม่เหมาะกับ end user)
4. ชุดที่ใช้ทดสอบถ้าท่านใดมีแล้วใช้งานจริงไม่ได้ต้องขออภัยมา ณ ที่นี้