しゃべる時計の声:好きな声の時報を自作する
しゃべる時計は時刻を声で知らせます。毎正時、ボタンを押したとき、決まった時刻などです。市販の時計には内蔵の声が一つあるだけです。ナレーターやアニメのキャラクター、家族の声で時刻を聞きたいなら、自分で作れます。
このガイドでは、無料のSuperClonicaエンジンで1日のすべての時刻を一度だけ音声化し、Raspberry PiやLinuxパソコンで正しいファイルを再生する方法を紹介します。インターネットもサブスクリプションも不要です。
すべての時刻を一度だけ音声化する
1日は1440分なので、1440個の短いファイルがあればどの時刻にも対応できます。毎正時の時報だけなら24個で足ります。「午前七時五分です」「九時半です」のように、時刻は聞こえてほしい読み方で書きましょう。07:05の読み方を声に推測させずに済みます。python -m pip install superclonica-cpuで無料のエンジンを入れ、Pythonで from superclonica import Superclonica, tts = Superclonica(), then for h in range(24) and m in range(60): text = words(h, m); audio, rate = tts.synthesize(text, voice="voice.json", lang="ja", seed=4); tts.save(f"{h:02d}{m:02d}.wav", audio) と書きます。wordsは自分の言語用に書く小さな関数です。seedを固定すると、すべてのファイルで同じ声になります。
毎正時に正しいファイルを再生する
スピーカーをつないだRaspberry PiやLinuxパソコンなら、スケジューラーのcronで現在時刻のファイルを再生できます。crontabに 0 * * * * aplay /home/pi/clock/$(date +\%H\%M).wav のような行を書けば、毎正時に時刻を読み上げます。crontabではパーセント記号を\%と書く必要があります。そうしないとcronが改行に変えてしまいます。ボタンで鳴らすなら、ボタンが起動するスクリプトから同じaplayコマンドを実行します。
声を選ぶ
各ページで時報の一文(30〜100文字)を入力すれば、アカウントなしで無料で声を試せます。寝室の時計には落ち着いたナレーター、子ども部屋にはキャラクターの声がおすすめです。家族の声の時計を作るなら、本人の同意を得て5〜10秒のはっきりした声を録音し、スタジオで声を学習させましょう。自分のNVIDIAグラフィックカードなら学習は無料です。
ほかの言語の時計
エンジンは31言語を話します。中国語にはまだ対応していません。時刻の言い方は言語ごとに違います。日本語は「時」と「分」を使い、ドイツ語では7時30分を「halb acht」と言い、ロシア語では数によって「時」「分」の語形が変わります。関数に自分の言語の時刻の言い方を書き、1日分を音声化する前にいくつかの時刻のファイルを聞いて確認しましょう。
市販の時計のほうがよい場合
視力の低下などでいつでも時刻を聞く必要がある人には、市販のしゃべる時計やスマートフォンのスクリーンリーダーのほうが、自作よりも簡単で確実です。自作のしゃべる時計は、趣味の工作、なじみのある声のプレゼント、作業場や店、教室での時報に向いています。