さて、今回は「say」について。言わずと知れた、OS Xに標準装備のTTS(Text To Speech)コマンドだ。Mavericksで実施されたさりげない機能強化点を中心に、「say」を使った音声合成のおもしろさを紹介していこう。

「Otoya」さんとの出会い

Mavericksでは、日本語音声として女性の声(Kyoko)のほかに、男性の「Otoya」が追加された。必要に応じてAppleのサーバから入手する方式が引き続き採用され、システム環境設定「音声入力と読み上げ」パネルの「テキスト読み上げ」タブからカスタマイズを選択し、「Kyoko」か「Otoya」をチェックするとダウンロードが開始される。

音声データのサイズは「Kyoko」が419MB、「Otoya」が327MB。ひととおり試したかぎりでは、両者の語い数に差があるとは思えないので、新顔「Otoya」のほうが音データを効率的に収録できているのだろう。ダウンロードするのはどちらか一方で構わないので、とりあえずはサイズが小さいOtoyaを選択するといい。本稿でも、Otoyaさんを選択したという前提で話を進めていくことにする。

ところで、「Otoya」は漢字で表記するとどうなるのか? 「音弥」か「乙也」、はたまた「乙哉」……ひょっとして定食屋風に「大○屋」だったり? さすがにそれはないだろうが、テスト再生時の声は「こんにちは、わたしのなまえは『あといや』です」と聞こえるので、そもそも漢字表記なしの「Otoya」なのかも……謎は深まるばかりだ。

システム環境設定「音声入力と読み上げ」パネルの「テキスト読み上げ」タブからカスタマイズを選択すると、新しい日本語音声「Otoya」をダウンロードできる

この画面で選択したものが、デフォルトの音声として使用される

さり気なく変わった「say」

TTSは「テキストエディット」や「メモ」などCocoa APIを利用するアプリケーションから利用できる。読み上げたい範囲を選択し、メニューバーから「編集」→「スピーチ」→「読み上げを開始」、またはコンテキストメニューで「スピーチ」→「読み上げを開始」を選択すれば、システム環境設定「音声入力と読み上げ」パネルに登録した音声で読み上げられる。

Terminalで「say」コマンドを利用しても、TTSの機能にアクセスできる。長らく変化がなかったこのコマンドだが、Mavericksでさり気なく機能強化されているので、その使い方と応用方法を紹介してみたい。

1 待望(?)のインタラクティブモードが追加

sayコマンド最大の変更点は、インタラクティブモードが追加されたことだろう。使い方はかんたん、オプションに「-i」をくわえて実行すると入力待ち状態となり、以降改行されるごとにその行の内容を読み上げてくれる。文字エンコードをUTF-8に設定していれば(Mavericksの初期設定がUTF-8なので通常は変更不要)、漢字混じりの文字列も扱える。インタラクティブモードを終了するには、適当な位置でControl-Cを押せばいい。

ただし、デフォルトの状態では、フィードバックされる内容が文字化けしてしまう。これが気になる場合には、「--interactive=/green」などとオプションにカラーコードをくわえると、一瞬表示は崩れるが、最終的には文字化けを解消できる。長時間sayコマンドと戯れる場合に試してほしい。

「-i」オプションを付けてsayコマンドを実行すると、インタラクティブモードでひたすら読み上げを指示できる

2 鼻歌で「威風堂々」、関西弁も?

OS XのTTSは多数の言語に対応しているが、すべての言語/音声種が共通の機能を持つわけではない。たとえば、sayコマンドは「pbs」という内部コマンドを利用すると音程を上下できるが、KyokoやOtoyaでは変化が感じられない。「Alex」など英語の音声では、その「pbs」や「emph」を利用して微妙なイントネーションを持たせることができるが、日本語では難しい。歌うなど、とてもとても……

だからといって、諦めるのはまだ早い。Mavericks以前から利用できたが、Macにはかんたんな指示を出すだけで"歌わせる"ことができるのだ。

手順はかんたん、声の種類を決めるオプションに「Good」を指定し(-v Good)、引数に鼻歌用の適当な文字列を指定すればOK。以下のとおりコマンドラインを実行すれば、鼻歌で「威風堂々」を歌ってくれるはずだ。

$ say -v Good HumHumHumHumHumHumHumHumHumHumHumHumHumHumHumHumHumHumHumHumHumHum

KyokoさんやOtoyaは標準語以外のイントネーションを知らないようだが、うまく指示を出せばそれらしく聞かせることもできる。たとえば、「まいどおおきに」とすると「おお」の部分にイントネーションのピークが来てしまうが、「まいど」と「おお」、「きに」をそれぞれ別の言葉と認識させるべく指示を出すと、だいぶ"らしく"なる。関西在住の方は「まだまだや!」と仰るかもしれないが、多少は改善されることだろう。

$ say -v Kyoko "まイド おお 木に"