Macのsayコマンドの使い方

More than 3 years have passed since last update.

引数に文字列を渡すだけで何でも喋ってくれる

デフォルトではだいたいKyokoが喋ると思う

say "さんをつけろよデコ助野郎!"

引数に文字列が渡されなかった場合は標準入力から喋る

echo "さんをつけろよデコ助野郎!" | say

テキストファイルの内容を読み上げてもらうことも可能

ファイルを「-f」か「--input-file」で指定する

「-」を指定すると標準入力から喋る

echo "さんをつけろよデコ助野郎!" > sample.txt

say -f sample.txt

システム環境設定で、テキスト読み上げが日本語以外の音声になってる場合、日本語を喋ってくれない

その場合、設定を変更するか、音声を明示的に指定する


音声を変更

「-v」か「--voice」で音声を指定できる

日本語では最近、Otoyaっていうオッサンのボイスが追加された

(システム環境設定から事前にダウンロードする必要あり)

ダウンロード方法:「システム環境設定」=> 「音声入力と読み上げ」=> システムの声でカスタマイズを選択後Otoyaにチェックを入れる

say -v Otoya "そぉいっ!!!"

「?」を指定すると使用可能な音声の一覧が表示される

列は[名前、言語、例文]の順

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.
Ava en_US # Hello, my name is Ava. I am an American-English 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.
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!
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です。日本語の音声をお届けします。
Otoya ja_JP # こんにちは、私の名前はOtoyaです。日本語の音声をお届けします。
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.
Susan en_US # Hello, my name is Susan. I am an American-English voice.
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?
Whisper en_US # Pssssst, hey you, Yeah you, Who do ya think I'm talking to, the mouse?
Zarvox en_US # That looks like a peaceful planet.

英語ではAvaとかが滑らかに喋るのでおすすめ


速度

「-r」か「--rate」で速度を指定できる

1分間に何単語喋るかを数値で指定する

でも、日本語の音声だとシカトされる気がするので英語の音声を指定して使う

say -v Alex -r 10 "Hello"

非常にねっとりとした「Hello」が聞ける


進捗の表示

「--progress」で、どのくらい進んだかを表示する

「-i」または「--interactive」で、読み上げている文章を表示し、読み上げている最中の単語をハイライトする

ハイライトする文字色・背景色を変えたり、太字にすることもできる

ちょっと面白いけど、どうでもいいので省略


ファイル出力

「-o」か「--output-file」でファイルに出力できる

say "さんをつけろよデコ助野郎!" -o say.m4a

拡張子を指定すると、そのファイルフォーマットで保存してくれる

はずなんだけど、日本語の音声の場合はシカトされる気がする

音声によってサポートしてるファイルフォーマットが違うみたい

拡張子を省略した場合は「.aiff」で保存される

「--file-format」で、明示的にファイルフォーマットを指定できる

使用可能なフォーマットの一覧を表示するには「?」を指定する

列は[名称、説明、拡張子、データフォーマットリスト]の順

say --file-format ?

3gp2  3GPP-2 Audio         (.3g2) [Qclp,aac,aace,aacf,aach,aacl,aacp]

3gpp 3GP Audio (.3gp) [Qclp,aac,aace,aacf,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,aacf,aach,aacl,aacp,alac,alaw,ilbc,ima4,lpcm,ulaw]
m4af Apple MPEG-4 Audio (.m4a,.m4r) [aac,aace,aacf,aach,aacl,aacp,alac]
m4bf Apple MPEG-4 AudioBooks (.m4b) [aac,aace,aacf,aach,aacl,aacp]
mp4f MPEG-4 Audio (.mp4) [aac,aace,aacf,aach,aacl,aacp]

データフォーマットは「--data-format」で指定できる

データフォーマットの一覧も同じく「?」で表示できる

ファイルフォーマットを指定する必要があるので、ここではm4aを指定する

say --file-format m4af --data-format ?

aac   AAC, 1 channels

aace MPEG-4 AAC Enhanced Low Delay, 1 channels
aacf MPEG-4 AAC Enhanced Low Delay With SBR, 1 channels
aach MPEG-4 HE AAC, 1 channels
aacl MPEG-4 AAC Low Delay, 1 channels
aacp MPEG-4 HE AAC V2, 1 channels
alac Apple Lossless

だいたいの人は必要ないと思うし、少なくとも自分には必要ないからこれ以上の説明はman sayに丸投げする

エンディアンとかデータタイプとかサンプルサイズ(サンプルレート?)とか指定できるみたい

ファイルの出力について長々と書いたけど、読み上げの音質なんてどうでもいいので、自分は何も指定してない


ファイル出力の設定

「--bit-rate」

ビットレートを指定、指定できるビットレートは決まってるみたい

say --file-format m4af --bit-rate ?みたいにして一覧表示できる

「--channels」

チャンネルの数を数値で指定

(モノラル以外にする意味は不明)

「--quality」

品質を0〜127で指定

(何の品質だろう)


オーディオ機器の指定

「-a」でオーディオデバイスを指定できるらしい

これも「?」で一覧表示できる (何も繋いでないので、一つしか無かった)

say -a ?

   47 Built-in Output

「-n」でMacサービスも指定できるらしいけどよく分からないのでパス