理想未来ってなんやねん

娘可愛い。お父さん頑張る。

Mac OS X Lionのsayコマンドに感動した

Mac OS X Lionではスピーチで日本語が話せるようになりました。
sayコマンドで読み上げができることは以前より知っていたのですが、色々できることに感動したのでメモしておきます。

スピーチについて

sayコマンドについて説明する前に、スピーチ機能について軽く説明しておきます。
Mac OS Xには以前より英語については標準で音声合成機能がついており、テキストの読み上げができるようになっておりました。


テキストエディットなどからコンテキストメニュー(右クリックで表示されるメニュー)のスピーチより読み上げ開始を選択すると音声の読み上げができるようになっています。



割と古くからある機能ですが、昨年2011年7月に発売されたLionより英語以外の言語でもスピーチ機能が使えるようになりましたので、その点については目新しい機能となります。


Lionのスピーチ機能については下記のサイトが分かりやすく説明していると思いますので、参考としてリンクを掲載しておきます。
http://www.mactechlab.jp/products-report/16673.html


以上がスピーチ機能の簡単な説明となりますが、sayコマンドはこのスピーチの機能を使用して引数に与えた文字を読み上げてくれるコマンドです。

sayコマンドを使用してみる

実際にsayコマンドを使用してみたいと思います。
『アプリケーション』→『ユーティリティ』より『ターミナル』を起動し、以下のコマンドを入力してみてください。($ 記号はプロンプトなので省いてください。)

$ say "Hello, I'm Macintosh."

Download


うまく再生できましたでしょうか?
Macがお手元にない方の為に変換した音声ファイルを載せておきます。


次に長い文章を再生してみたいと思います。
以下の文章をコピーして、ターミナルに貼付けて見てください。

$ say "Hello, I'm Macintosh. It sure is great to get out of that bag. Unaccostumed as I am to public speaking. I'd like to share with you a maxim I thought of the first time I met an IBM mainframe: NEVER TRUST A COMPUTER YOU CAN'T LIFT! Obviously I can talk, but right now I'd like to sit back and listen. So, it is with considerable pride that I introduce a man who's been like a father to me... STEVE JOBS"

Download


長ったらしい文章ですが、スティーブ・ジョブズ1984年1月24日に初代Macintoshを紹介した時にMacが喋った有名なスピーチです。(下記動画3分7秒付近)


28年の時を超えてお手元のMacが伝説のスピーチを読み上げることに感動があるかどうかは分かりませんが、ネタとして喋らせてみるのも面白いのではないかと思います。

音声を選択する

sayコマンドで使用できる音声は、-v オプションで指定できます。
使用できる音声はsay -v?で調べることができます。

$ say -v?
Agnes               en_US    # Isn't it nice to have a computer that will talk to you?
Albert              en_US    #  I have a frog in my throat. No, I mean a real frog!
Alex                en_US    # Most people recognize me by my voice.
Bad News            en_US    # The light you see at the end of the tunnel is the headlamp of a fast approaching train.
Bahh                en_US    # Do not pull the wool over my eyes.
Bells               en_US    # Time flies when you are having fun.
Boing               en_US    # Spring has sprung, fall has fell, winter's here and it's colder than usual.
Bruce               en_US    # I sure like being inside this fancy computer
Bubbles             en_US    # Pull the plug! I'm drowning!
Cellos              en_US    # Doo da doo da dum dee dee doodly doo dum dum dum doo da doo da doo da doo da doo da doo da doo
Deranged            en_US    # I need to go on a really long vacation.
Felix               fr_CA    # Bonjour, je m’appelle Felix. Je suis une voix canadienne.
Fred                en_US    # I sure like being inside this fancy computer
Good News           en_US    # Congratulations you just won the sweepstakes and you don't have to pay income tax again.
Hysterical          en_US    # Please stop tickling me!
Jill                en_US    # Hello, my name is Jill. I am an American-English voice.
Junior              en_US    # My favorite food is pizza.
Kathy               en_US    # Isn't it nice to have a computer that will talk to you?
Kyoko               ja_JP    # こんにちは、私の名前はKyokoです。日本語の音声をお届けします。
Narae               ko_KR    # 안녕하세요. 제 이름은 Narae입니다. 저는 한국어 음성입니다.
Pipe Organ          en_US    # We must rejoice in this morbid voice.
Princess            en_US    # When I grow up I'm going to be a scientist.
Ralph               en_US    # The sum of the squares of the legs of a right triangle is equal to the square of the hypotenuse.
Ting-Ting           zh_CN    # 您好,我叫Ting-Ting。我讲中文普通话。
Trinoids            en_US    # We cannot communicate with these carbon units.
Vicki               en_US    # Isn't it nice to have a computer that will talk to you?
Victoria            en_US    # Isn't it nice to have a computer that will talk to you?
Virginie            fr_FR    # Bonjour, je m’appelle Virginie. Je suis une voix française.
Whisper             en_US    # Pssssst, hey you, Yeah you, Who do ya think I'm talking to, the mouse?
Yuna                ko_KR    # 안녕하세요. 제 이름은 Yuna입니다. 저는 한국어 음성입니다.
Zarvox              en_US    # That looks like a peaceful planet.


尚、システムにインストールされていない音声は表示されませんが、『システム環境設定』の『スピーチ』の『テキスト読み上げ』の『システムの声』より音声を追加することができます。
日本語や韓国語はデフォルトではインストールされていないので必要に応じてインストールしてください。



それでは早速喋らせてみましょう。

まず、日本語を喋らせてみます。

$ say -v Kyoko 'こんにちは、私の名前はKyokoです。日本語の音声をお届けします。'

Download


次に英語を喋らせてみましょう。

$ say -v Kathy "Isn't it nice to have a computer that will talk to you?"

Download


次にフランス語を喋らせてみましょう

$ say -v Virginie 'Bonjour, je m’appelle Virginie. Je suis une voix française.'

Download


中国語いってみましょう。

$ say -v Ting-Ting '您好,我叫Ting-Ting。我讲中文普通话。'

Download


韓国語もいってみましょう。

$ say -v Yuna '안녕하세요. 제 이름은 Yuna입니다. 저는 한국어 음성입니다.' 

Download


如何でしょうか?


若干イントネーションがおかしい気もしますが、外国語の発音の勉強などの用途につかえるのではないでしょうか。
個人的には英語、日本語には大して感動がなかったのですが、韓国語や中国語の音声も使えることに感動しました。

ファイルに出力する

sayコマンドに-oオプションを指定すると、音声をファイルに出力することもできます。
ファイルフォーマットは、say --file-format=? で調べることができます。

$ say --file-format=?
3gp2  3GPP-2 Audio         (.3g2) [Qclp,aac,aace,aach,aacl,aacp]
3gpp  3GP Audio            (.3gp) [Qclp,aac,aace,aach,aacl,aacp]
AIFC  AIFC                 (.aifc,.aiff,.aif) [lpcm,ulaw,alaw,ima4,Qclp]
AIFF  AIFF                 (.aiff,.aif) [lpcm]
NeXT  NeXT/Sun             (.snd,.au) [lpcm,ulaw]
Sd2f  Sound Designer II    (.sd2) [lpcm]
WAVE  WAVE                 (.wav) [lpcm,ulaw,alaw]
adts  AAC ADTS             (.aac,.adts) [aac,aach,aacp]
caff  CAF                  (.caf) [Qclp,aac,aace,aach,aacl,aacp,alac,alaw,ilbc,ima4,lpcm,ulaw]
m4af  Apple MPEG-4 Audio   (.m4a,.m4r) [aac,aace,aach,aacl,aacp,alac]
mp4f  MPEG-4 Audio         (.mp4) [aac,aace,aach,aacl,aacp]


mp4形式でファイルに変換してみます。

$ say -v Kyoko -o ~/Desktop/kyoko.mp4 'こんにちは、私の名前はKyokoです。日本語の音声をお届けします。'

デスクトップにkyoko.mp4という音声ファイルが生成されると思いますので、QuickTime等で再生してみてください。

ビットレートを指定する

ビットレートは--bit-rateオプションで指定できます。
指定できるビットレートはsay --bit-rate=? で調べることができます。

$ say --file-format=3gpp --bit-rate=?
 7000
13000
$ say --file-format=mp4f --bit-rate=?
 8000
12000
16000
20000
24000
28000
32000
40000
48000
56000
64000
72000
80000
96000
112000
128000
144000
160000
192000
224000
256000
288000
320000
384000
448000
512000
576000
640000
768000
960000
1280000


ビットレートを指定します。

$ say -v Kyoko -o ~/Desktop/kyoko.mp4 --bit-rate=8000 'こんにちは、私の名前はKyokoです。日本語の音声をお届けします。'
Setting bit rate failed: !dat                  # おおっと!?

失敗してしまいました。。。
ビットレートは --bit-rateオプションで指定する以外に、--data-formatオプションで指定することもできます。

$ say -v Kyoko -o ~/Desktop/kyoko.mp4 --bit-rate=aac@8000 'こんにちは、私の名前はKyokoです。日本語の音声をお届けします。'
$                                              # OK

ビットレートは--data-formatで指定した方がうまく行くようです。

mp3に変換する

sayコマンドではWAVEやAIFF、mp4(AAC)で作成することはできますが、mp3で作成することはできません。
どうしてもmp3にしたい場合は、ffmpegを使用するとコンバートすることができます。

ffmpegをインストールする

ffmpegをインストールする方法はいくつかありますが、ここではMacPortsでインストールする方法で説明します。
MacPortsThe MacPorts Project -- Download & Installationからダウンロードしてインストールしてください。


MacPortsがインストールされている場合、ffmpegのインストールは下記のコマンドで行えます。

$ sudo port install ffmpeg


ビルドが始まるので、インストールが完了するまで暫くお待ちください。

mp3に変換する

実際にffmpegコマンドで変換してみます。

$ ffmpeg -i ~/Desktop/kyoko.mp4 -ar 11025 -ab 8 ~/Desktop/kyoko.mp3

kyoko.mp3というmp3ファイルが出来ると思います。



以上、何かのお役に立てれば幸いです。