Skip to content
memakura edited this page May 2, 2018 · 35 revisions

(マイクの設定) (他の拡張ブロック)

s2listen の使い方

  • scratch 2.0 (オフライン版) で音声認識ができます。
  • Julius という音声認識エンジンを使っています。
  • ひとまず Windows (64bit) 版です。

s2listen block_and_sample

インストール方法

  1. https://github.com/memakura/s2listen/releases にて、Downloads にある s2listen-(バージョン番号)-amd64.msi をダウンロードします。
    • msiファイルおよびインストールされるファイル一式はいずれもサイズが大きいので注意してください(約250MB以上は必要です!)
  2. ダウンロードされた msi ファイルを実行します。
    1. Windows8 以上では「WindowsによってPCが保護されました」と出る場合があるので、[詳細情報] をクリックして [実行] してください。
    2. Windows7 では「発行元が不明」と出るかもしれませんが、これも同じく[実行] を選んでください。
    3. このほかウイルスチェックソフトでも発行元が不明に関して何かしら警告が出る可能性があります。
  3. インストール先は変えることができますが、特に指定しなければ C:\Program Files\s2listen にインストールされます。(以下ではここにインストールしたことを前提に説明します。)

s2listen の起動方法

  • デスクトップ上の s2listen を実行するとコマンドプロンプト(黒い画面)がまずひとつ出てきます。その後、すぐにもう一つコマンドプロンプトが出てきます。
    1. 後から出てきたほうには /// Module mode ready などが表示されます。最初に出てきたほうには === Initialized JuliusClient ===INPUT などが表示されれば起動完了です。
    2. 正しく起動されていれば、Scratch の「その他」ブロックの s2listen にて赤丸から緑丸になります。

s2listen の終了方法

  • あとから開いたウィンドウ (ウィンドウの上部バーに s2listen と書かれてない方)で Ctrl+C を押すか、[X]マークで閉じてください。
  • 先に開いたウィンドウを先に閉じてしまった場合は、残りのウィンドウも忘れずに閉じてください。

音声入力デバイスの設定

  • はじめて使用する場合や認識がうまくいかない場合は、以下を参考にマイクの設定を確認してみてください。Bluetooth ヘッドセットや USB、ミニジャック端子接続のマイクの使い方についても説明しています。

デモおよび Scratch でのプロジェクトの作り方

  • 以下のデモが参考になります。
    • C:\Program Files\s2listen\00scratch\s2listen_demo.sb2
    • 旗を押すと、「何か話してね」と表示後の5秒以内にしゃべった内容が Scratch cat の吹き出しに表示されます。
    • s を押すと、1ターンだけのしりとりができます。「ご」から始まることばか、そうでないかを判断します。漢字として認識されることもあり、その場合はうまくいきません・・
    • a を押すと、しゃべった文に品詞を分解(解析)して教えてくれます。
    • f を押すと、果物の名前を聞かれるので、一つまたは複数の果物の名前を言ってみてください。特定の果物を言うとメッセージが変わります。
  • 新たに作成するとき
    1. Scratch2 offline editor でシフトキーを押しながら「ファイル」->「実験的なHTTP拡張を読み込み」を選んでください。
    2. C:\Program Files\s2listen\00scratch\s2listen_JA.s2e を選択してください。(このファイルはデスクトップなど、別の分かりやすい場所にコピーしておいてもよいです。)
      • s2listen_JA.s2eからもダウンロードできます。(右クリックの「名前を付けてリンク先を保存」などで保存できます。)

ブロックの説明

聞こえるまで最大(...)秒待つ
認識を開始します。最大の待ち時間も秒で指定します。
聞こえた言葉
認識した文が入ります。
聞こえた(...)番目の[...詞]
認識文中に出てきた単語の内、指定した品詞の単語が入ります。たとえば「聞こえた2番目の名詞」を指定すると、文を前から順にみて2番目に出てきた名詞の単語になります。
聞こえた[...詞]の数
認識文中に出てきた品詞の個数が入ります。
品詞の数
このs2listenで扱える品詞の種類の数が入ります。
品詞#(...)の名前
s2listen では品詞に番号がついており、これを品詞番号と呼びます。このブロックは、品詞番号を指定するとその番号に対応する品詞名(「名詞」「動詞」など)が入ります。たとえば「品詞1番の名前」は「名詞」になります。
聞こえた(...)番目の品詞#(...)
( 聞こえた(...)番目の[...詞] )と同様に、認識文中に出てきた単語が入りますが、品詞名ではなく品詞番号で指定します。
聞こえた品詞#(...)の数
( 聞こえた[...詞]の数 )と同様に、認識文中に出てきた品詞の個数が入りますが、品詞名ではなく品詞番号で指定します。
耳に入った言葉
最後に認識された文が入ります。[ 聞こえるまで最大(...)秒待つ ]を実行しなくても常に勝手に更新されていきます。「その他」のところでチェックボックスにチェックを入れておくと、連続認識されているのが分かります。

他のモジュールとの組み合わせ

s2listen は、Scratchとの通信で 50211 番ポート、Julius との通信で 10500 番ポートを使用します。

音声合成 s2speak の使用ポートは 50210 なので、下の図のように同時利用が可能です。組み合わせると音声対話システムを作成できます。また、Arduino を制御できる s2aio は 50209 を使用するため、LED や モータ制御、センサなどと組み合わせても面白そうです。

音声合成との組み合わせ

拡張機能

  1. Julius は DNN (Deep Neural Network)版も動作しますが、サイズが大きいためひとまずインストーラからは外しています。
    • インストーラ版ではなくPythonから呼ぶ場合は、第一引数に DNN を指定すると DNN 版になります。Python を使う場合は、リポジトリの README.md を確認してください。
  2. 音響モデルや言語モデルの差し替え
    • 現在はJuliusディクテーションキットに含まれているモデルを利用しています。
    • しかし、必要な単語が決まっている場合は言語モデル(どんな単語がどんな順で現れやすいかの辞書)を、しゃべる人や使うマイク、状況などが決まっている場合は音響モデル(各音がどんな信号と対応するか)を差し替える方がずっと認識精度がよくなるはずです。
    • C:\Program Files\s2listen\julius\model の中にあるファイルを変更すればよいですが、これについては Julius のマニュアルを見てください。

ライセンス

  • 修正 BSD
  • ただし、julius フォルダ内(Julius 関連ファイル)については ThirdPartyLicenses.txt に従います。