音声合成APIで時報アプリを作ろう

昨今、声を利用したアプリやガジェットが人気です。そんな中、多くの家電も言葉を発するようになっています。そこで、先日のアップデートで、なでしこ3でも、音声合成APIが手軽に使えるようになりました。そこで、時報アプリを作ってみましょう。

  • 音声合成APIを使って時報を作ってみよう

    音声合成APIを使って時報を作ってみよう

時報アプリを作ってみよう

そもそも、時報というのは、時刻を知らせるための合図のことを言います。そのため、ロンドンなどにある時計台の鐘の音なども時報と言うことができます。とは言え、今回は、音声合成APIの実力を測るべく、NTTで提供されている電話の時報サービス(番号117番)に似たものを作ってみましょう。ここで作る時報アプリでは、10秒毎に現在時刻を読み上げるというものですが、せっかくなので、時刻の3秒前から予告音『ぴっ』も読み上げてみましょう。

まずは、Webブラウザを起動して、時報アプリのプログラムを実行してみましょう。以下のプログラムを、なでしこ3簡易エディタに貼り付けて、実行ボタンを押してみましょう。

ラベル=「00:00:00」のラベル作成。
●時計更新
  ラベルに今をHTML設定。
  今の1文字右部分をCに代入。
  もし、C="0"ならば
    今を「:」で区切ってNに代入。
               {"声高":2.0, "速度":0.8}に話者詳細設定。
              「ぽーん。」と話す。
               {"声高":1.0, "速度":1.0}に話者詳細設定。
              「{N[0]}時{N[1]}分{N[2]}秒です」と話す。
  ここまで。
        もし、C>6ならば
               {"声高":1.5, "速度":1.5}に話者詳細設定。
             「ぴー」と話す。
        ここまで。
  「時計更新」を1秒後。
ここまで
時計更新。

すると、10秒毎に時報を読み上げてくれます。20行に満たないプログラムですが、時報アプリを作ることができました。なお、時報を終了するには、Webブラウザの画面を更新するかページを閉じます。(画面の更新は、Windowsなら[F5]キー、macOSなら[command]+[R]キーです。

最新のWebブラウザ(Google Chrome、Firefox、Edge、Safariなど)で実行することができます。

音声合成APIについて

今回、音声の読み上げに利用しているのは、Webブラウザにもともと備わっている『音声合成API(Speech Synthesis API)』です。

なでしこ3であれば、Webブラウザ上で以下のように記述するだけで、文章を読み上げることができます。

「こんにちは。」と話す

OSやWebブラウザによって、使用する読み上げエンジンが異なるため、全く同じように聞こえる訳ではありませんが、ちょっとメッセージを読み上げるのに、便利な機能です。

しかも、読み上げ速度や、声の高さを調整することができます。以下のプログラムを実行してみると、声の高さや速度を変えて読み上げます。

# --- 高い声でゆっくり話す ---
{"声高":1.8, "速度":0.6}に話者詳細設定。
「生麦、生ゴメ、生卵」と話す

# --- 普通の声で話す ---
{"声高":1.0, "速度":1.0}に話者詳細設定。
「生麦、生ゴメ、生卵」と話す

# --- 低い声で早口で話す ---
{"声高":0.5, "速度":2.0}に話者詳細設定。
「生麦、生ゴメ、生卵」と話す

それで、最初に紹介した時報プログラムで、予告音の「ぴっ」という音は、効果音ファイルでなく、音声合成によってそれらしい声で再現しています。

さらに、音声合成APIでは、日本語だけでなく複数の言語をサポートしています。以下のプログラムを実行してみると、お使いの環境でサポートしている話者と話すことのできる言語コードを表示します。

話者一覧取得して反復
    F名前=対象["name"]
    F言語=対象["lang"]
    「{F名前}: {F言語}」を表示。
ここまで

筆者のmacOS+Safariの環境では、以下のようにたくさんの話者が表示されました。名前と言語コードが表示されますが、言語コードをWebで検索してみると、どこの国のどの言語なのかが分かります。例えば、「日本語-日本」なら「ja-JP」、「英語-アメリカ」なら「en-US」といった具合です。

  • 話者の一覧を表示したところ

    話者の一覧を表示したところ

表示された言語や名前を参考にして、話者を特定すると、異なる言語を話すことができます。以下のプログラムを実行すると、英語と中国語で「こんにちは、お元気ですか?」と話します。

# 英語の話者に話し手を変更
「en-US」に話者設定。
# 英語を話す
「Hello. How are you?」と話す。

# 中国語の話者に話し手を変更
「zh-CN」に話者設定。
# 中国語を話す
「你好。你身体好吗?」と話す。

もちろん、利用環境により話せる言語が異なりますので、うまく中国語の話者が特定できるとは限りませんが、うまくいけば、語学の学習にも役立ちそうな機能です。

まとめ

以上、今回は、音声合成APIの使い方と、実際にAPIの利用例として、時報アプリを紹介しました。本文でも紹介したように、昨今のWebブラウザであれば、音声合成APIを利用できます。しかも、『「xxx」と話す』と記述するだけなので、とても手軽に文章の読み上げができます。ビンゴマシーンのようなみんなで楽しむゲームや、外国人のためのガイド、語学学習など、ちょっとしたアイデアで、いろいろな用途に使えることでしょう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。