日本語化できた!Cloud Speechのデモプログラム【Google AIY Voice Kit】

シェアする

さて、Google AIY Voiceを入手して、組み立てたはいいものの、AIYスピーカーさんは日本語対応していなかった、というオチがありました。

【Google AIY Voice Kit】OK Googleして知った落とし穴
さて、ドツボにはまったGoogle Assistant APIの有効化作業も何とか終了しました。 無事、OKGoogleのデモプロ...

確かに、AIYスピーカーのGoogle Assistantは、日本語対応していないのですが、Cloud Speech APIは、80の言語に対応しているとのことで、当然、日本語にも対応しているはず。

というわけで、デモプログラムの一つであるcloudspeech_demo.pyを、日本語化してみます。

cloudspeech_demo.pyのプログラムを実行するまでの準備はこちらのページをご参照くださいませ。

【Google AIY Voice Kit】課金されちゃう?Cloud Speech APIで登録
次は、Google Cloud Platform上で、Google Cloud Speech APIを登録します。付属の冊子の第6章にあたります。



どんなことが日本語でできるの?

さて、このcloudspeech_demo.pyは、AIYスピーカーのボタンの電気が付いたり、消えたりするのを音声コマンドで制御する、というものでした。

具体的には、

  • Turn on the lightと言うとボタンと基板内部のLEDライトが点灯する
  • Turn off the lightと言うと上記のLEDライトが消灯する
  • Blinkというと上記のLEDライトが点滅する
  • Goodbyeというと、プログラムが終了する

を行なうためのものです。

これを、日本語で行なえるようにします。つまり、

  • 「電気を付けて」と言うとボタンと基板内部のLEDライトが点灯する
  • 「電気を消して」と言うと上記のLEDライトが消灯する
  • 「チカチカ」というと上記のLEDライトが点滅する
  • 「さようなら」というと、プログラムが終了する

を行なえるようにします。

また、その後、「Repeat after me」の後に言った言葉をスピーカーにリピートしてもらうというプログラムも作りましたので、そちらも日本語でできるか試してみましたが、これはできませんでした。理由は後で説明します。

プログラムの知識がある人は、もっといろいろできるのかもしれませんが、今回のは、そういう知識がゼロな私でも簡単にできてしまう変更です。

cloudspeech_demo.pyというファイルの編集

まずは、AIYスピーカーに関するプログラムのファイルがどこにあるか確認してみましょう。デスクトップ画面左上のフォルダの絵をクリックすると…

フォルダ一覧が表示されますが、この中の、/home/pi/AIY-voice-kit-python/src というフォルダにこれまで使用したプログラムがいろいろ入っています。

このフォルダ中にあるcloudspeech_demo.pyというファイルを今回は編集するわけです。

さっそくはじめてみます。

デスクトップ画面のstart dev terminalのアイコンをダブルクリックして、ターミナル画面を開きます。

そして、cloudspeech_demo.pyのバックアップを念のため取っておきます。

cp src/cloudspeech_demo.py src/cloudspeech_demo_backup.py

バックアップファイルを作成したら、「ls src」とコマンドを打って、srcフォルダ内のファイルリストを確認してみると、ファイルが生成されているのが分かるはずです。

そして、cloudspeech_demo.pyのプログラムを書き換えます。

nano src/cloudspeech_demo.py

で、直接編集するのが楽ですかね。nanoエディタでファイルを開いたら、

まずは、20行目のあたりにある「import aiy.voicehat」のテキストの下に「aiy.i18n.set_language_code(‘ja-JP’)」と挿入します。こんな感じ。

import aiy.voicehat
aiy.i18n.set_language_code('ja-JP')

これを書き換えると、自分のしゃべる音声を日本語化してくれるようになります。

実際に、

src/cloudspeech_demo.py

を実行して、ボタンを押して、何かしゃべってみると、ターミナル画面に日本語が表示されるようになりました。


ここから、テキスト中のコマンドを、日本語に書き換えます。「電気を消して」、「電気を付けて」といったコマンドを日本語に直していくのです。

再び、nanoエディタでcloudspeech_demo.pyを開いて変更します。

日本語は各自好きにアレンジして良いと思いますが、私が書いたのはこんな感じ。

recognizer = aiy.cloudspeech.get_recognizer()
recognizer.expect_phrase('電気を消して')
recognizer.expect_phrase('電気をつけて')
recognizer.expect_phrase('チカチカ')
print('ボタンを押して話してください')
button.wait_for_press()
print('聞き取り中…')
text = recognizer.recognize()
if text is None:
    print('すみません。聞こえませんでした。')
else:
    print('あなたの言葉は "', text, '"')
    if '電気をつけて' in text:
        led.set_state(aiy.voicehat.LED.ON)
    elif '電気を消して' in text:
        led.set_state(aiy.voicehat.LED.OFF)
    elif 'チカチカ' in text:
        led.set_state(aiy.voicehat.LED.BLINK)
    elif 'さようなら' in text:
        break

上の引用は、インデントは無視しちゃってるので、実際は、nanoエディタで表示されるインデントは崩さないように注意して、緑色に光ってるテキストの場所だけを変更してください。

が、この時注意しないといけないのは、音声認識が認識できるテキストを書くことです。

どういうことかといいますと、実際に「電気を付けて」と発音すると、ターミナルの画面には「電気をつけて」と表示されます。

なので、上のテキストで、「電気を付けて」と「付けて」を漢字で書くと認識してくれないのです。なので、実際に、スピーカーに向かって発音して、認識してくれた漢字・ひらがなで、日本語のコマンドを入力するようにします。

i18n.pyというファイルの変更

さて、こうして、テキストを日本語に変更しても、LEDボタンの電気は付いたり消えたりしません。もう一つ変更すべきファイルがあります。

先ほど、使用したプログラムが格納されていた/home/pi/AIY-voice-kit-python/src というフォルダ内には、さらにaiyというフォルダがあります。

aiyフォルダをクリックしますと、またいろいろなファイルが出てきますが、この中の、i18.pyというのが、設定言語に関するファイルです。

このファイルの設定言語を変更すると、日本語(や他の言語)のコマンドで、ライトが消したり、消えたりの動作が可能になります。

nano src/aiy/i18n.py

再び、nanoエディタを使って、i18n.pyファイルを編集します。

このテキストの中ほどにある、「_DEFAULT_LANGUAGE_CODE = ‘en-US’」を

「_DEFAULT_LANGUAGE_CODE = ‘ja-JP’」に変更します。

_DEFAULT_LANGUAGE_CODE = 'ja-JP'

そして、保存。

そして、cloudspeech_demo.pyを実行してみますと…。

src/cloudspeech_demo.py

こんな感じに日本語になり、日本語のコマンドでLEDボタンのライトが付いたり消えたりするようになりました。

Repeat after meはダメ

ただし、repeat after meのコマンドに関してはダメでした。

repeat after meのプログラムについては、こちらの記事で触れましたが、

Google AIY Voice Kitで電子工作~LEDライトを点灯~
おうちにGoogle Homeがやってきましたが、Google AIY Voice Kitでも、AIスピーカーの学習を進めております。 ...

この部分を日本語で行なおうとするとエラーになりました。どうやら、日本語には対応してないようで、

エラーメッセージによると、repeat after me、自分の言ったことをスピーカーがリピートしてくれる機能は、英語(米語、英語)、ドイツ語、スペイン語、フランス語、イタリア語のみの対応のようです。

実際、スペイン語でcloudspeech_demo.pyを書き換えてやってみたら、スペイン語でリピートしてくれました。

日本語が対応していないのは残念ですが、LEDボタンが付いたり、消えたりが、日本語でできたのは嬉しかったです。

今後ともどんなことができるのか、試していきたいと思います。

(追記)

Google Assistant SDKのアップデートにより、日本語対応が可能となりました。かなり日本語版のGoogle Homeに近づきました(^^♪。こちらのページもご参照くださいませ。

AIYスピーカーを、ほぼ日本語版Google Homeに【Google Assistant SDKアップデート】
Google Assistant SDKが日本語対応したとの情報を受け、AIYスピーカーと格闘し、試行錯誤の末、日本語で話しかけて、日本語で答えてくれるレベルに何とか到達しました。日本語でほぼGoogle Home化成功。その過程をメモしておきます。

コメント

  1. surarin papa より:

    ラズ初デビューのおっさんです、
    毎回、参考にさせて頂いてます。
    キットも先行予約しましたが、自分でGoogle homeを作れると思っていたのですが、肩すかしを食らった感があります。
    次の記事を楽しみにしてます。
    これにp3が取られるのが嫌で、ZERO W で稼働させてますよ。
    ラズでドローンをコントロールできるプログラミングが出来ればと思っています。

    では。

    • surarin papaさん、コメントありがとうございます!
      Zero Wで稼働するって良いアイデアですね。いつか私もZeroをゲットしたいです(^^♪。
      ドローンをコントロール、いいですねー。音声で指示できたらステキ!
      ラズベリーパイは、将来あれもやりたいなぁ、と夢が広がって、考えてるだけで楽しいですね。

error: Content is protected !!