say
คำสั่งของ OS X มีประโยชน์สำหรับงานบางอย่าง (เช่น 'แจ้งเตือนฉันเมื่อมีผู้ติดต่อออนไลน์) ของ Skype แต่มีการออกเสียงชื่อบางชื่อไม่ถูกต้อง มีวิธีสอนsay
ให้ออกเสียงคำต่าง ๆ หรือไม่?
ตัวอย่างเช่นลอง:
say "Hi, Joel Spolsky"
เสียง 'ol' ดูเหมือน 'ball' มากกว่า 'old' ฉันต้องการเพิ่มข้อยกเว้นที่บอกว่า "ออกเสียง Spolsky เช่นนี้" แทนที่จะพยายามสอนกฎทางภาษาใหม่ ฉันพนันได้เลยว่ามันเป็นวิธีที่สามารถออกเสียง "iphone" ตามที่ Apple ต้องการ
อัพเดท - หลังการวิจัยบางอย่างนี่คือสิ่งที่ฉันได้เรียนรู้:
- ข้อความเป็นคำพูดจะแบ่งระหว่างการเปลี่ยนข้อความเป็นหน่วยเสียงจากนั้นหน่วยเสียงจะเปลี่ยนเป็นเสียงโดยใช้เสียง การเปลี่ยนเสียงจะไม่มีผลกับหน่วยเสียง
- สังเคราะห์เสียงพูดผู้จัดการมีฟังก์ชั่นบางอย่างสำหรับการเปลี่ยนข้อความให้เป็นหน่วยเสียงและวิธีการสำหรับ การลงทะเบียนพจนานุกรมคำพูดที่จะเพิ่มแผนที่ข้อความใหม่ฟอนิม อย่างไรก็ตามพจนานุกรมคำพูดของ Apple จะต้องอยู่ในรูปแบบไบนารี - ฉันไม่พบ XML ที่สมบูรณ์
- เมื่อใช้
dtrace
งานsay
ฉันพบไฟล์ที่น่าสนใจบางไฟล์ที่เปิดใน /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources นี่อาจเป็นพจนานุกรมคำพูด แต่เป็นไบนารีทั้งหมดยกเว้น Homophones ซึ่งเป็น XML การเพิ่มรายการใน Homophones ไม่ได้ทำอะไรเลย - มันอาจใช้ในการพูดเป็นข้อความ รหัสเหล่านี้เป็นรหัสที่ลงนามโดย Apple การเปลี่ยนแปลงอาจทำให้บางโปรแกรมไม่ทำงาน- PrefixDictionary
- CartNames
- CartLite
- SymbolDictionary
- คำพ้องเสียง
- มีวิธีการที่จะเพิ่มรูปแบบข้อความขององค์ประกอบอินเตอร์เฟซโปรแกรมเพื่อ VoiceOver ทำงานจำนวนมากซึ่งนักพัฒนาได้รับฟรีมี แต่บิตหากิน มาตรฐานที่นี่ดูเหมือนจะใช้การสะกดคำตามความจำเป็น
การเดาของฉันคือ:
say
เป็นเลเยอร์แสงของโค้ดที่ด้านบนของ Speech Synthesis Manager มันจะง่ายสำหรับ Apple devs ที่จะเพิ่มตัวเลือกบรรทัดคำสั่งเพื่อนำพา ธ ไปยังพจนานุกรมคำพูดสำหรับการทำแผนที่ฟอนิมทางเลือก แต่พวกมันไม่ได้ทำsay
มันอาจจะเป็นโครงการโอเพนซอร์สประโยชน์ในการเขียนที่ดีกว่า- Skype อาจใช้ Speech Synthesis Manager โดยตรงไม่ปล่อยให้ตะขอเปลี่ยนวิธีออกเสียงชื่อเพื่อนของฉันออกเสียงนอกเหนือจากการสะกดคำแบบออกเสียงซึ่งเป็นเรื่องโง่
- วิธีที่ง่ายที่สุดในการสร้างเวอร์ชันบรรทัดคำสั่ง
say
คือวิธีที่ JRobert แนะนำ
นี่คือการดำเนินการอย่างรวดเร็วของฉันโดยใช้คำแนะนำการสะกดคำของ Doug Harris:
#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say
ในที่สุดสิ่งที่สนุกบรรทัดคำสั่ง:
# Apple is weird
sqlite3 /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources/Tuples .dump
# Get too much information about what files are being opened
sudo dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'
# Just fun
say -v bad "Joel Spolsky Spolsky Spolsky Spolsky Spolsky, Joel Spolsky Spolsky Spolsky Spolsky Spolsky"
echo "scale=1000; 4*a(1)" | bc -l | say
say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'
ไม่มีผลกระทบต่อการออกเสียง: รายการเสียงสามารถดูได้ที่ System Preferences -> Speech -> Text to Speech ปัญหาอยู่ที่การแปลฟอนิมไม่ใช่การสังเคราะห์เสียง หากคุณกำลังเรียกห้องสมุดโดยตรงคุณสามารถตั้งค่าหน่วยความจำแบบกำหนดเอง: developer.apple.com/mac/library/documentation/Carbon/Reference/… ค้นหาดิสก์ของฉันเพื่อดูว่า Apple devs ใช้. plist ...
say
ใช้ด้วย-v
หรือไม่