OS Xのsay
コマンドは一部のタスク(Skypeの「連絡先がオンラインになったときに通知する」など)には役立ちますが、一部の名前を誤って発音します。say
単語の発音を変える方法を教える方法はありますか?
たとえば、試してみてください:
say "Hi, Joel Spolsky"
「ol」は「old」ではなく「ball」のように聞こえます。新しい言語のルールを教えようとするのではなく、「このようにスポロスキーを宣伝する」という例外を追加したいと思います。Appleが望むように「iphone」を発音することができるので、方法があるに違いない。
更新 -いくつかの調査の後、私が学んだことは次のとおりです。
- テキスト読み上げは、テキストを音素に変換することと、音声を使用して音素を音声に変換することとに分けられます。音声を変更しても音素には影響しません。
- 音声合成Managerは、のためにいくつかの機能がある音素にテキストを回し、そしてための方法 音声辞書登録新しいテキスト音素マップを追加します。ただし、Appleの音声辞書はバイナリ形式でなければなりません。plistXMLは見つかりませんでした。
dtrace
実行中に使用するとsay
、/ System / Library / PrivateFrameworks / SpeechDictionary.framework / Resourcesでいくつかの興味深いファイルが開かれています。これはおそらく音声辞書ですが、XMLである同音異義語を除き、すべてバイナリです。Homophonesにエントリを追加しても何も起こりません。おそらく、音声読み上げで使用されます。これらはAppleによって署名されたコードでもあります。変更すると、一部のプログラムが動作しなくなる可能性があります。- PrefixDictionary
- CartNames
- CartLite
- SymbolDictionary
- ホモホン
- ある方法のVoiceOverが働くので、開発者は自由のために取得され、多くのアプリケーションインターフェイス要素のテキストバージョンを追加するには、しかし、そこにあるトリッキーなビットが。ここでの標準は、必要に応じて音声表記を使用することです。
私の推測は次のとおりです。
say
Speech Synthesis Managerの上にあるコードのライトレイヤーです。Apple開発者がコマンドラインオプションを追加して、代替音素マッピング用の音声辞書plistへのパスを取得するのは簡単ですが、そうではありませんでした。より良いを書くことは有用なオープンソースプロジェクトかもしれませんsay
。- SkypeはおそらくSpeech Synthesis Managerを直接使用しており、友人の名前の発音方法を変更するためのフックを残していません。
- コマンドラインバージョンを作成する最も簡単な方法
say
は、JRobertが提案した方法です。
ダグ・ハリスの綴りの提案を使用して、ここに簡単な実装を示します。
#!/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'
。音声のリストは、[システム環境設定]-> [音声]-> [音声合成]にあります。問題は、音声合成ではなく音素変換にあります。ライブラリを直接呼び出す場合は、カスタム音素を設定できます: developer.apple.com/mac/library/documentation/Carbon/Reference / ...ディスクを検索して、Apple 開発者が.plistを使用しているかどうかを確認します...
say
で使用している音声を変更してみました-v
か?