say
Perintah OS X berguna untuk beberapa tugas (seperti Skype 'beri tahu saya ketika ada kontak online), tetapi itu mengucapkan beberapa nama secara tidak benar. Apakah ada cara untuk mengajar say
mengucapkan kata secara berbeda?
Misalnya, coba:
say "Hi, Joel Spolsky"
'Ol' terdengar seperti 'bola' dan bukan 'tua'. Saya ingin menambahkan pengecualian yang mengatakan "Ucapkan Spolsky seperti ini", daripada mencoba mengajarkan aturan linguistik baru. Saya yakin ada cara karena bisa mengucapkan "iphone" seperti yang diinginkan Apple.
Pembaruan - Setelah beberapa penelitian, inilah yang saya pelajari:
- Text-to-speech terbagi antara mengubah teks menjadi fonem, dan kemudian fonem diubah menjadi audio menggunakan suara. Mengubah suara tidak mempengaruhi fonem.
- The Speech Synthesis Manajer memiliki beberapa fungsi untuk mengubah teks ke fonem , dan metode untuk mendaftarkan kamus pidato yang akan menambahkan peta text-fonem baru. Namun, kamus pidato Apple harus dalam bentuk biner - Saya tidak menemukan XML plist.
- Menggunakan
dtrace
saat menjalankansay
, saya menemukan beberapa file menarik dibuka di /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources. Ini mungkin adalah kamus ucapan, tetapi semuanya adalah biner, kecuali untuk Homofon, yang merupakan XML. Menambahkan entri ke Homophones tidak menghasilkan apa-apa - itu mungkin digunakan dalam ucapan-ke-teks. Mereka juga kode yang ditandatangani oleh Apple - mengubahnya bisa mencegah beberapa program bekerja.- PrefixDictionary
- Nama Cart
- CartLite
- SymbolDictionary
- Homofon
- Ada beberapa cara untuk menambahkan versi teks dari elemen antarmuka aplikasi agar VoiceOver berfungsi, banyak yang didapat pengembang secara gratis, tetapi ada bagian-bagian yang rumit . Standar di sini tampaknya menggunakan ejaan fonetis sesuai kebutuhan.
Dugaan saya adalah:
say
adalah lapisan kode yang ringan di atas Manajer Sintesis Bicara. Akan mudah bagi para pengembang Apple untuk menambahkan opsi baris perintah untuk mengambil jalur ke daftar kamus ucapan untuk pemetaan fonem alternatif, tetapi mereka tidak. Mungkin proyek open source yang bermanfaat untuk menulis yang lebih baiksay
.- Skype mungkin menggunakan Speech Synthesis Manager secara langsung, tidak meninggalkan kait untuk mengubah cara nama teman saya diucapkan, selain mengeja secara fonetis, yang konyol.
- Cara termudah untuk membuat versi baris perintah
say
adalah seperti yang disarankan JRobert.
Inilah penerapan cepat saya, menggunakan saran ejaan Doug Harris:
#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say
Akhirnya, beberapa hal baris perintah yang menyenangkan:
# 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
yang digunakan-v
?say -v alex 'Spolsky' ; say -v vicki 'Spolsky'; say -v bad 'Spolsky Spolsky Spolsky Spolsky Spolsky Spols'
. Daftar suara dapat ditemukan di System Preferences -> Speech -> Text to Speech. Masalahnya adalah pada terjemahan fonem, bukan pada sintesis suara. Jika Anda memanggil perpustakaan secara langsung, Anda dapat mengatur fonem khusus: developer.apple.com/mac/library/documentation/Carbon/Reference/... Mencari disk saya untuk melihat apakah Apple devs menggunakanJawaban:
Anda juga dapat memasukkan persis fonem yang ingin Anda sampaikan. Sintaksnya tidak begitu rumit.
Ex:
[[INPT PHON]] hAAIH.
Periksa tautan ini untuk mempelajari lebih lanjut: http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/SpeechSynthesisProgrammingGuide/Phonemes/Phonemes.html#//apple_ref/doc/uid/TP40004365-CH9-SW1
sumber
Ucapan baru Anda akan berfungsi seperti ucapan lama, tetapi dengan pengucapan pilihan Anda.
sumber
@ bruno-carvalho menjawab pertanyaan ini untuk saya. Tapi, saya juga perlu memburu tag
[[inpt TEXT]]
untuk mendapatkan perintah say untuk kembali membaca teks (sintesis suara) secara normal. Sebagai contoh:say [[inpt PHON]] hAAIH, [[inpt TEXT]] how are you?
Semoga, menambahkan ini ke jawabannya akan membantu pembaca selanjutnya dari pertanyaan ini.
sumber
Saya pikir Anda tidak bisa. Anda dapat mencoba mengatur suara default ke yang berbeda di preferensi sistem, atau Anda bisa mengetikkan bagaimana Anda ingin sesuatu diucapkan. Misalnya, "Hai, Jole Spole sky."
sumber
Ini adalah batasan yang disayangkan, mengingat bahwa Apple tampaknya sebagian besar jalan di sana. Pengguna VoiceOver dapat dengan mudah memasukkan pengucapan mereka sendiri menggunakan Utilitas VoiceOver (Ucapan-> Pengucapan). Tetapi, pengaturan VoiceOver tampaknya tidak berlaku untuk perintah "say" atau menu Edit-> Speech -> "Start Speech" di Safari dan aplikasi yang disediakan Apple lainnya.
sumber
Tidak ada cara untuk 'mengajarkan'
say
program untuk mengucapkan kata-kata secara berbeda. Seperti yang disarankan di atas, cara termudah untuk mendapatkan pelafalan yang Anda inginkan adalah menyesuaikan ejaan kata-kata Anda hingga mengatakan pelafalan seperti yang Anda inginkan.sumber