(追記:2020年1月17日 現在の状況に合わせて記事を書き換えました)
今回は、Google Voice Kitのデモプログラムの一つであるcloudspeech_demo.pyを、日本語化してみます。Cloud Speech APIは、80の言語に対応しているとのことで、当然、日本語にも対応していました。
ちなみに、このプログラムを動かすには、Google Cloud Speech APIが有効化されている必要があります。その手順は、下記のページをご参照くださいませ。
どんなことが日本語でできるの?
さて、このcloudspeech_demo.pyは、AIYスピーカーのボタンの電気が付いたり、消えたりするのを音声コマンドで制御する、というものでした。
具体的には、
- Turn on the lightと言うとボタンと基板内部のLEDライトが点灯する
- Turn off the lightと言うと上記のLEDライトが消灯する
- Blinkというと上記のLEDライトが点滅する
- Goodbyeというと、プログラムが終了する
を行なうためのものです。
これを、日本語で行なえるようにします。つまり、
- 「電気を付けて」と言うとボタンと基板内部のLEDライトが点灯する
- 「電気を消して」と言うと上記のLEDライトが消灯する
- 「チカチカ」というと上記のLEDライトが点滅する
- 「さようなら」というと、プログラムが終了する
を行なえるようにします。
プログラムの知識がある人は、もっといろいろできるのかもしれませんが、今回のは、そういう知識がゼロな私でも簡単にできてしまう変更です。
cloudspeech_demo.pyというファイルの編集
まずは、AIYスピーカーに関するプログラムのファイルがどこにあるか確認してみましょう。デスクトップ画面左上のフォルダの絵をクリックすると…
フォルダ一覧が表示されますが、この中の、/home/pi/AIY-voice-kit-python/src というフォルダにこれまで使用したプログラムがいろいろ入っています。その中の一つvoiceというフォルダにあるのが、ボイスキット関連のデモプログラムです。
このフォルダ中にあるcloudspeech_demo.pyというファイルを今回は編集します。
さっそくはじめてみます。
デスクトップ画面のstart dev terminalのアイコンをダブルクリックして、ターミナル画面を開きます。
そして、cloudspeech_demo.pyをコピーして、cloudspeech_demo_jp.pyというプログラムにします。
cd src/examples/voice cp ./cloudspeech_demo.py cloudspeech_demo_jp.py
ファイルをコピーしたら、「ls」とコマンドを打って、voiceフォルダ内のファイルリストを確認してみると、ファイルが生成されているのが分かるはずです。
そして、cloudspeech_demo_jp.pyのプログラムを書き換えます。
nano ./cloudspeech_demo_jp.py
今回は、nanoエディタでファイルを開いたら、
26行目にある
if language_code.startswith('en_'):
ここを
if language_code.startswith('jp_'):
に書き換えます。それだけ!
以前に比べると簡単になりました。
ラズパイの設定言語を日本語に
さらに、ラズパイの設定言語を日本語にします。
再起動しまして…
これを書き換えると、自分のしゃべる音声を日本語化してくれるようになります。
実際に、
cd AIY-projects-python/src/examples/voice ./cloudspeech_demo.py
を実行して、ボタンを押して、何かしゃべってみると、ターミナル画面に日本語が表示されるようになりました。
ここから、テキスト中のコマンドを、日本語に書き換えます。「電気を消して」、「電気を付けて」といったコマンドを日本語に直していくのです。
さて、nanoエディタでcloudspeech_demo_jp.pyを開いて変更します。
nano cloudspeech_demo_jp.py
日本語は各自好きにアレンジして良いと思いますが、私が書いたのはこんな感じ。
def get_hints(language_code): if language_code.startswith('ja_'): return ('電気を消して', '電気をつけて', 'チカチカ', 'さようなら') return None
あと下の方で、
with Board() as board: while True: if hints: logging.info('何か話してください。たとえば %s.' % ', '.join(hints)) else: logging.info('何か話してください') text = client.recognize(language_code=args.language, hint_phrases=hints) if text is None: logging.info('すみません。聞こえませんでした。') continue logging.info('あなたの言葉は "%s"' % text) text = text.lower() if '電気をつけて' in text: board.led.state = Led.ON elif '電気を消して' in text: board.led.state = Led.OFF elif 'チカチカ' in text: board.led.state = Led.BLINK elif 'さようなら' in text: break
上の引用は、インデントは崩れちゃっているかもしれないので、実際はnanoエディタで表示されるインデントは崩さないように注意して、緑色のテキストの場所のだけを変更してください。
そして、cloudspeech_demo_jp.pyを実行してみますと…。
./cloudspeech_demo_jp.py
こんな感じに日本語になり、日本語のコマンドでLEDボタンのライトが付いたり消えたりするようになりました。
このように、LEDボタンが付いたり、消えたりが、日本語でできたのは嬉しかったです。
今後ともどんなことができるのか、試していきたいと思います。
コメント
ラズ初デビューのおっさんです、
毎回、参考にさせて頂いてます。
キットも先行予約しましたが、自分でGoogle homeを作れると思っていたのですが、肩すかしを食らった感があります。
次の記事を楽しみにしてます。
これにp3が取られるのが嫌で、ZERO W で稼働させてますよ。
ラズでドローンをコントロールできるプログラミングが出来ればと思っています。
では。
surarin papaさん、コメントありがとうございます!
Zero Wで稼働するって良いアイデアですね。いつか私もZeroをゲットしたいです(^^♪。
ドローンをコントロール、いいですねー。音声で指示できたらステキ!
ラズベリーパイは、将来あれもやりたいなぁ、と夢が広がって、考えてるだけで楽しいですね。