วันนี้ฉันแบ่งปันสคริปต์ที่มีประโยชน์มากในการแปลงข้อความเป็นคำพูดโดยใช้เครื่องมือพูดของ Google ข้อได้เปรียบหลักของสคริปต์นี้คือ "หลีกเลี่ยง" ขีด จำกัด 100 ไบต์ที่กำหนดโดย Google ตามจริงแล้วจะเคารพขีด จำกัด นี้ แต่ส่งทุกบรรทัดโดยอัตโนมัติซึ่งหมายความว่าข้อ จำกัด นี้จะไม่มีใครสังเกตเห็นโดยผู้ใช้ อย่างไรก็ตามผู้ที่มีความต้องการมากที่สุดจะสังเกตเห็นว่าการแปลงไม่ได้มีคุณภาพเท่ากับที่เราได้รับใน Google แปลภาษาส่วนใหญ่เกิดจากขีด จำกัด นี้และไม่สามารถส่งผ่านข้อความทั้งหมดได้ในคราวเดียว ในแง่บวกควรเพิ่มว่าสคริปต์นี้ยังช่วยให้คุณสามารถระบุภาษาของข้อความที่จะแปลงได้
เมื่อได้รับการชี้แจงแล้วเรามาดูขั้นตอนในการปฏิบัติตาม
ขั้นตอน
1.- สร้างไฟล์ด้วยชื่อ t2s.sh
2.- คัดลอกเนื้อหาต่อไปนี้:
#! / bin / bash ################################## # สคริปต์คำพูดโดย Dan Fountain # # แก้ไขโดย UsemosLinux # # TalkToDanF@gmail.com # ################################################ INPUT = $ * STRINGNUM = 0 ary = ($ {INPUT: 2}) echo "---------------------------" echo "Speech Script โดย Dan Fountain" echo "TalkToDanF @ gmail.com "echo" --------------------------- "สำหรับคีย์ใน" $ {! ary [@]} "ทำ SHORTTMP [ $ STRINGNUM] = "$ {SHORTTMP [$ STRINGNUM]} $ {ary [$ key]}" LENGTH = $ (echo $ {# SHORTTMP [$ STRINGNUM]}) #echo "คำ: $ key, $ {ary [$ คีย์]} "#echo" เพิ่มใน: $ STRINGNUM "ถ้า [[" $ LENGTH "-lt" 100 "]]; แล้ว #echo เริ่มต้นบรรทัดใหม่ SHORT [$ STRINGNUM] = $ {SHORTTMP [$ STRINGNUM]} else STRINGNUM = $ (($ STRINGNUM + 1)) SHORTTMP [$ STRINGNUM] = "$ {ary [$ key]}" SHORT [ $ STRINGNUM] = "$ {ary [$ key]}" fi done for key in "$ {! SHORT [@]}" do #echo "line: $ key is: $ {SHORT [$ key]}" echo " กำลังเล่นบรรทัด: $ (($ key + 1)) จาก $ (($ STRINGNUM + 1)) "mplayer" http://translate.google.com/translate_tts? คือ = UTF-8 &tl = $ {1} & q = $ {SHORT [$ key]} "เสร็จสิ้น
3.- ให้สิทธิ์ดำเนินการกับสคริปต์:
sudo chmod + x t2s.sh
4.- ดำเนินการส่งผ่านสคริปต์เป็นพารามิเตอร์: a) รหัสภาษาที่ตรงกับข้อความ b) ข้อความที่จะแปลง ตัวอย่างเช่น:
./t2s.sh en นี่เป็นข้อความที่น่าสนใจมากในการแปลง
หวังว่าคุณจะสนุกกับมัน
เจ๋งแค่ไหนขอบคุณมาก😉
และเสียงที่ไพเราะของเธอฉันคิดว่าฉันตกหลุมรัก😛
ขอโทษนะคุณช่วยพูดภาษาจีนได้ไหมมันตรวจไม่พบอักษรจีนมี แต่พินอิน
นี่เป็นสิ่งที่ดีสำหรับสคริปต์ที่ตรวจสอบจดหมายหรือการเตือนภัยส่วนบุคคลที่เมื่อตื่นขึ้นมาจะบอกการคาดการณ์และข้อความที่รอดำเนินการ
ที่นี่ฉันทำวิดีโอทดสอบ😛 https://www.youtube.com/watch?v=O3IeK7PjA_0
ดี! ขอขอบคุณ!
ฟังดูดีมากฉันต้องติดตั้ง mpg123 🙂เท่านั้น
Tube เพื่อติดตั้ง mpg123 แต่มันเจ๋งตรงที่ถ้ามันไม่ยอมรับบางคำมันจะบอกว่าเป็นตัวหนอนที่ถูกต้องเป็นต้น
EH EH
อัปเดตฐานข้อมูลไวรัสแล้ว (?)
apt update && ./t2.sh en ฐานข้อมูลไวรัสได้รับการอัพเดต
ฮ่าฮ่าฮ่ายอดเยี่ยมฉันได้ใช้มันแล้วเสียงที่เย้ายวนอย่างไม่ต้องสงสัย =) ขอบคุณที่แบ่งปัน
ในฐานะผู้ใช้ Mac OSX ฉันไม่สามารถใช้ Script ได้เนื่องจากฉันไม่มี mpg123 ดังนั้นด้วยการแก้ไข Script และใช้ VLC เราสามารถปล่อยให้มันทำงานได้อย่างถูกต้องบน Mac OS X
http://pastebin.com/C2Mkp1Qy
ปัญหาคือ vlc จะยังคงเปิดอยู่และไม่ปิดเมื่อดำเนินการเสร็จสิ้นและคุณสามารถใช้ cvlc เพื่อป้องกันไม่ให้เปิดอินเทอร์เฟซแบบกราฟิก
ก็สามารถใส่ได้
cvlc –play-and-exit « https://translate.google.com/translate_tts?tl=$[$key]} »
เพื่อให้ปิดเมื่อสิ้นสุดการสืบพันธุ์
สวัสดีทุกคนฉันได้รับข้อผิดพลาดนี้มาดูกันว่ามีใครบอกฉันว่าปัญหาคืออะไร
สายการเล่น: 1 จาก 1
คำขอ HTTP ล้มเหลว: ไม่พบ 404
[mpg123.c: 610] ข้อผิดพลาด: การเข้าถึงทรัพยากร http http://translate.google.com/translate_tts?tl=hola&q= ล้มเหลว
[code] สายการเล่น: 1 จาก 1
คำขอ HTTP ล้มเหลว: ไม่พบ 404
[mpg123.c: 610] ข้อผิดพลาด: การเข้าถึงทรัพยากร http http://translate.google.com/translate_tts?tl=hola&q= ล้มเหลว [/ code]
ปัญหาคือคุณใช้สคริปต์ผิด
เมื่อคุณเรียกใช้คุณต้องส่งภาษาของข้อความเป็นพารามิเตอร์แรกดังที่แสดงในตัวอย่างในโพสต์
ฉันยกตัวอย่างอื่นให้คุณ:
./t2s.sh ในนี่คือตัวอย่างง่ายๆ
สังเกตว่าหลังจาก ts2.sh จะตามด้วย "en" (ซึ่งหมายถึง "ภาษาอังกฤษ" นั่นคือภาษาอังกฤษ) สำหรับภาษาสเปนให้ใช้ "es" ตามด้วยวลีในภาษาที่คุณต้องการแปลง
กอด! พอล.
คุณรู้ว่าคำสั่ง speak no? ฮิฮิ
espeak -v คือ«สวัสดี»
ใช่ แต่ไม่เหมือนกัน เสียงดีกว่านี้มาก 🙂
เราเห็นด้วย!
ทักทาย!
สำหรับผู้ที่มีปัญหากับ mpg123 -q หรือไม่ชอบสามารถเปลี่ยนมาใช้ mplayer
mpg123 -q «http://translate.google.com/translate_tts?tl=$[1íritu&q=$[SHORT[$key]} »
mplayer « http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]} »
"mplayer -really-quiet" ดีกว่าดังนั้นจึงไม่เติมข้อความที่ส่งออก
ความคิดที่ดีในการใช้ Google สำหรับแอปพลิเคชันของฉันเหมาะกับฉันเหมือนถุงมือ
http://github.com/alfa30/t2v
อีกหนึ่งคำถาม; ใครช่วยบอกวิธีบันทึกเสียงเอาต์พุตได้ไหม ???
ฉันตอบคุณเองเพราะฉันเพิ่งเข้าใจ เมื่อใช้ mpg123 ฉันได้แก้ไขบรรทัด 38 ของสคริปต์โดยมีลักษณะดังนี้:
mpg123 -q -w audio.wav « http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]} »
ฉันได้เพิ่ม -w audio.wav สิ่งนี้จะสร้างไฟล์ wav พร้อมเสียงของวลี แต่เมื่อฉันทิ้งไว้มันจะไม่ได้ยิน หากคุณต้องการฟังวลีคุณจะต้องเพิ่มบรรทัดอื่น คุณทั้งสองจะมีลักษณะดังนี้:
mpg123 -q -w audio.wav « http://translate.google.com/translate_tts?tl=$[1[&q=$[SHORT[$key]} » &
mpg123 -q «http://translate.google.com/translate_tts?tl=$[1íritu&q=$[SHORT[$key]} »
แน่นอนว่ามันสามารถทำได้ด้วยวิธีอื่นที่มีประสิทธิภาพและสะอาดกว่า แต่อย่างน้อยมันก็ได้ผลสำหรับฉัน
José GDF ยอดเยี่ยมฉันลองใช้วิธีของคุณแล้วได้ผลลัพธ์ที่ดีมากคำทักทาย
หากต้องการบันทึกการรับส่งข้อมูลในการดำเนินการครั้งที่สองคุณสามารถสร้าง. wav ที่คุณสร้างขึ้นในครั้งแรกได้
ใช่โดยใช้เครื่องเล่นที่เราติดตั้งไว้ ตัวอย่างเช่นด้วย VLC Player จะเป็น:
vlc-audio.wav
ใครพูด vlc ผู้เล่นคนอื่น ๆ พูดรวมถึงผู้ที่ทำงานโดยเทอร์มินัล
และเพื่อหลีกเลี่ยงการเขียนทับไฟล์ทุกครั้งที่ใช้สคริปต์ควรใช้ตัวแปรสำหรับชื่อ ชื่อที่ผู้ใช้จะใส่ (อ่านคำสั่ง) ก่อนเริ่ม ... แต่นั่นจะเป็นการม้วนงอ😀
ฉันทำใน PHP (เพื่อสร้างไฟล์เสียงสำหรับระบบโทรศัพท์ Asterisk *)
<?php
$ url = 'http://translate.google.com/translate_tts?ie=UTF-8&q={query}% 0A & tl = is & prev = input ';
ถ้า (count ($ argv) <= 1) {
$ name = basename ($ argv [0]);
ตาย ($ name. 'การใช้งาน:'. $ name. '
}
array_shift ($ argv);
$ query = ระเบิด ('', $ argv);
$ filename = str_replace (array ('', ',', '.'), '-', $ query);
$ filename = str_replace ('-', '-', $ filename);
$ url = str_replace ('{query}', rawurlencode ($ query), $ url);
$ ch = curl_init ();
curl_setopt ($ ch, CURLOPT_URL, $ url);
curl_setopt ($ ch, CURLOPT_HEADER, 0);
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER จริง);
$ result = curl_exec ($ ch);
curl_close ($ ch);
$ path = getcwd (). '/'. $ filename;
file_put_contents ($ path. '. mp3', $ result);
@exec ("sox {$ path} .mp3 -b 16 -r 8000 -t wavpcm {$ path} .wav");
@unlink ($ path. '. mp3');
ฉันได้จัดการบันทึกเสียงเอาต์พุตด้วยคำสั่งนี้แล้ว:
arecord ~ / zhongwen.mp3 & ./t2s.sh zh ni hao; fg
และในตอนท้าย ctrl + c เพื่อหยุดการบันทึก
ฉันไม่เคยใช้ php
แต่เมื่อทำงาน:
php5 text-to-speech.php คือสวัสดี
konsola เป็นเจ้าภาพสิ่งนี้:
รูปแบบ sox FAIL: ไม่มีตัวจัดการสำหรับนามสกุลไฟล์ `mp3 ′
การสนับสนุนใด ๆ ที่ได้รับการชื่นชมอย่างมากฉันจะลองอีกครั้งในภายหลัง
2 แอพสำหรับตัวแปลภาษา Google + การแปลข้อความเป็นคำพูด:
http://www.linuxhispano.net/2014/05/29/traductor-de-google-voz/
ฉันคิดว่ามันเป็นวิธีที่ดีที่สุดในการแปลงเสียงไม่แย่เท่าตัวเลือกอื่น ๆ สำหรับ Linux> _
มีวิธีทำให้มันอ่านไฟล์ข้อความธรรมดาหรือไม่?
การแปลงหนังสือทั้งเล่มเป็นเสียงจะมีประโยชน์มาก
มันไม่ได้ผลสำหรับฉันฉันไม่รู้ว่าทำไมสิ่งนี้ถึงออกมา:
xxxxx: ~ / Documents / Linux $ ./t2s.sh สวัสดี
---------
สคริปต์คำพูดโดย Dan Fountain
Talktodanf@gmail.com
---------
สายการเล่น: 1 จาก 1
http_open: HTTP / 1.0 400 คำขอที่ไม่ถูกต้อง
http://translate.google.com: ไม่พบไฟล์หรือโฟลเดอร์ที่คุณค้นหา
ฉันติดตั้ง mpg123 แล้วและฉันได้ทำการทดสอบเพียงเล็กน้อยและไม่มีอะไรเลย…. ขอบคุณล่วงหน้า
สวัสดีคริปนี้ทำหน้าที่ฉันได้ดีมากทั้งการฟังเสียงและการบันทึกคำพูดของผู้แปล
ในความเป็นจริงฉันได้แก้ไขสคริปต์เพื่อปรับให้เข้ากับความต้องการที่ฉันมี: แปลงรายการคำในข้อความ (เลมาริโอ) ให้เป็นเสียงพูด บันทึกเสียงของฉันใน wav แปลงเป็น ogg และตั้งชื่อตามคำที่อ่าน
ฉันทำสิ่งนี้ใน KDE โดยใช้ Kdialog เพื่อระบุเส้นทางที่ไฟล์ที่มีรายการคำอยู่และไดเร็กทอรีที่ฉันต้องการบันทึกเสียงเสียง
เมื่อการแปลง WAV เป็น OGG เสร็จสิ้นจะสร้างโฟลเดอร์สองโฟลเดอร์ที่เก็บ wav ไว้ที่ด้านหนึ่งและอีกด้านหนึ่งจะถูกเก็บไว้
ตอนแรกมันทำให้ฉันโกรธเพราะมันไม่ได้อ่านคำที่มีสำเนียงอย่างถูกต้อง แต่ฉันพบว่าคุณต้องเพิ่ม "es & ie = UTF8" ในโค้ด ฉันลืมการเข้ารหัสอักขระไปชั่วขณะ
ฉันฝากรหัสของสคริปต์ที่ฉันสร้างไว้ให้คุณเผื่อว่ามันจะช่วยคุณได้:
################################################# #######################
#! / bin / ทุบตี
##################################
# การบรรยายข้อความเป็นคำพูด #
# ดัดแปลงโดย Ignacio Cruz Martínez #
# จดหมายเป็นความลับ xD #
##################################
#KDE กล่องโต้ตอบเพื่อระบุเส้นทางและชื่อของศัพท์
soyunarchivo = $ (kdialog –inputbox «ป้อนเส้นทางและชื่อของไฟล์ (มีนามสกุลถ้ามี): »)
#KDE กล่องโต้ตอบเพื่อระบุโฟลเดอร์ปลายทางสำหรับไฟล์เสียง
path = $ (kdialog –inputbox «ป้อนเส้นทางเพื่อบันทึกเสียงเสียง: »)
# ถึง cat ทุกบรรทัดของไฟล์ข้อความจะถูกอ่านแต่ละบรรทัดประกอบด้วยคำเดียว
สำหรับฉันใน $ (cat $ soyunfile)
do
ก้อง $ i
# การแปลงเป็นคำพูดโดยใช้ Google แปลอย่าลืมการเข้ารหัสเพื่อให้อ่านสำเนียง
mpg123 -q -w "$ path" $ i.wav "http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i"
mpg123 -q "http://translate.google.com/translate_tts?tl=es&ie=UTF8&q=$i"
# ใช้ ffmpeg เพื่อแปลงไฟล์ wav เป็น ogg
ffmpeg -i "$ path" $ i.wav -acodec libvorbis "$ path" $ i.ogg
ทำ
# ด้วยบรรทัดเหล่านี้โฟลเดอร์จะถูกสร้างขึ้นเพื่อจัดระเบียบไฟล์เสียงใน WAV หรือ OGG
mkdir "$ path" WAV
mv "$ path" *. wav "$ path" WAV
mkdir "$ path" OGG
mv "$ path" *. ogg "$ path" OGG
#KDE เพื่อระบุว่างานเสร็จแล้ว
kdialog –msgbox "กระบวนการสิ้นสุด"
################################################# ###################
ตอนนี้คุณมีความรู้เกี่ยวกับใบอนุญาตในการใช้ไฟล์เสียงที่สร้างขึ้นหรือไม่?
ข้อ จำกัด สำหรับลิขสิทธิ์และสิ่งที่เกี่ยวข้อง สิ่งนี้ทำให้ฉันสนใจเพราะฉันวางแผนที่จะใช้ไฟล์เสียงเหล่านี้เพื่อสนับสนุนผู้ที่กำลังจะรู้หนังสือโดยพื้นฐานแล้วเป็นโครงการที่ไม่แสวงหาผลกำไร
และก็คือเครื่องมือนี้มีน้ำเสียงที่ดีที่สุดสำหรับภาษาสเปน แต่น่าเสียดายที่ใน Linux ไม่มีอะไรที่คล้ายกัน Mbrola ทำให้ฉันมีปัญหามากมายในการตั้งค่าร่วมกับ Gespeaker
ขอบคุณและพบกัน
คิดไม่ออก ... คงต้องดูใบอนุญาต Google Translator
สคริปต์ใช้งานไม่ได้สำหรับฉันเห็นได้ชัดว่าเป็นปัญหาที่เกี่ยวข้องกับ URL สำหรับผู้ที่สนใจนี่คือ URL ที่ถูกต้อง:
http://translate.google.com/translate_tts?tl=es&q=Hola
สวัสดี! ฉันได้ทำการทดสอบกับสคริปต์ของคุณและเมื่อเรียกใช้งานมันบอกฉันว่าไม่พบเสียงฉันจึงป้อน URL และดูเหมือนว่ามิสเตอร์กูเกิลได้ใส่ captcha ...
อัปเดตสคริปต์