Macのsayコマンドの使い方

  • 374
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

引数に文字列を渡すだけで何でも喋ってくれる
デフォルトではだいたい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サービスも指定できるらしいけどよく分からないのでパス