OS X'in say
komutu bazı görevler için yararlıdır (Skype'ın bir kişi çevrimiçi olduğunda bana bildir) gibi, ancak bazı adları yanlış telaffuz ediyor. say
Bir kelimeyi farklı şekilde telaffuz etmeyi öğretmenin bir yolu var mı ?
Örneğin, şunu deneyin:
say "Hi, Joel Spolsky"
'Ol', 'eski' yerine 'top' gibi geliyor. Yeni dilbilimsel kuralları öğretmeye çalışmak yerine "Spolsky'yi böyle telaffuz et" diyen bir istisna eklemek istiyorum. Bahse girerim Apple'ın istediği gibi "iphone" olarak telaffuz edebileceğinden bir yol var.
Güncelleme - Biraz araştırma yaptıktan sonra, öğrendiklerim:
- Metin-konuşma, metni fonemlere çevirme arasında bölünür ve daha sonra fonemler bir ses kullanılarak sese dönüştürülür. Sesi değiştirmek, fonemleri etkilemez.
- Konuşma Sentezi Yöneticisi bazı işlevlere sahiptir sesbirimler metin çevirme ve için bir yöntem , bir konuşma sözlüğü kayıt yeni bir metin-ses haritalar ekleyecek. Ancak, Apple'ın konuşma sözlüğü ikili bir biçimde olmalıdır - plist XML bulamadım.
- Kullanılması
dtrace
koşarkensay
, ben /System/Library/PrivateFrameworks/SpeechDictionary.framework/Resources açıldı bazı ilginç dosyalar bulundu. Bu muhtemelen konuşma sözlüğüdür, ancak XML olan Homofonlar hariç hepsi ikili. Homofonlara giriş eklemek hiçbir şey yapmaz - muhtemelen konuşmadan metne kullanılır. Ayrıca Apple tarafından imzalanmış kodlardır - bunları değiştirmek bazı programların çalışmasını engelleyebilir.- PrefixDictionary
- CartNames
- CartLite
- SymbolDictionary
- sestek
- Uygulama arayüzü öğelerinin metin sürümlerini eklemenin yolları vardır, böylece VoiceOver çalışır, bir çoğu geliştiricinin ücretsiz olarak alır, ancak zor bitler vardır . Buradaki standart, gerektiği gibi fonetik bir yazım kullanmak gibi görünüyor.
Tahminlerim:
say
Konuşma Sentezi Yöneticisi'nin üstündeki hafif bir kod katmanıdır. Apple geliştiricilerinin, alternatif foneme eşlemesi için bir konuşma sözlüğü plistine giden yolu bir komut satırı seçeneği eklemesi kolay olurdu, ancak olmadılar. Daha iyisi yazmak yararlı bir açık kaynaklı proje olabilirsay
.- Skype muhtemelen Speech Synthesis Manager'ı doğrudan kullanıyor ve arkadaşımın isimlerinin telaffuz biçimini değiştirmek için kanca bırakmıyor, bunları fonetik olarak hecelemekten başka, saçma.
- Komut satırı sürümünü oluşturmanın en kolay yolu
say
JRobert'in önerdiği yöntemdir.
Doug Harris'in yazım önerisini kullanarak hızlı uygulamam:
#!/bin/sh
echo $@ | tr '[A-Z]' '[a-z]' |
sed "s/spolsky/spowlsky/g" |
/usr/bin/say
Son olarak, bazı eğlenceli komut satırı şeyler:
# 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'
. Seslerin listesi Sistem Tercihleri -> Konuşma -> Metinden Konuşmaya bölümünde bulunabilir. Sorun ses sentezinde değil fonem çevirisinde. Doğrudan kütüphane aradığınız varsa, özel fonemleri ayarlayabilirsiniz: developer.apple.com/mac/library/documentation/Carbon/Reference/... Elma Devs bir .plist kullanılan olmadığını görmek için benim diski Aranıyor ...
say
Kullanmakta olan sesi değiştirmeyi denediniz-v
mi?