![見出し画像](https://assets.st-note.com/production/uploads/images/53479848/rectangle_large_type_2_b94a541d7fb344bc3dae997fd55f0d88.jpg?width=800)
ウェイクワードエンジン Porcupine の使い方
ウェイクワードエンジン 「Porcupine」の使い方をまとめました。
1. Porcupine
「Porcupine」は、高精度かつ軽量なウェイクワードエンジンです。「OK Google!」や「Hey Siri!」のような、ウェイクワードに反応するアプリを作成することができます。
「ウェイクワード」は、発話された時にデバイスをアクティブにすることを目的とした特別な単語またはフレーズです。「ホットワード」「トリガーワード」「ウェイクアップワード」とも呼ばれます。
2. Porcupineの特徴
「Porcupine」の特徴は、次のとおりです。
・高精度かつ軽量
コンパクトで計算効率が高く、IoTに最適。
・クロスプラットフォーム
・Raspberry Pi
・BeagleBone
・Arm Cortex-M
・Android
・iOS
・Linux(x86_64)
・macOS(x86_64)
・Windows(x86_64)
・Webブラウザ
・スケーラブル
複数の音声コマンドを常時検出することが可能。
・学習可能
「Picovoice Console」を使って独自のウェイクワードを学習可能。
2. ウェイクワード
以下のウェイクワードが利用可能なモデルが、無料で提供されています。
・picovoice
・porcupine
・hey siri
・terminator
・bumblebee
・hey google
・pico clock
・computer
・ok google
・jarvis
・alexa
・americano
・blueberry
・grasshopper
・grapefruit
それ以外のウェイクワードは有料で、「Picovoice Console」で学習することができます。現在の対応言語は、英語、ドイツ語、フランス語、スペイン語のみですが、日本語もComming Soonに入っています。
3. Pythonでのウェイクワード検出
Pythonでのウェイクワード検出の手順は、次のとおりです。
(1) Python3の仮想環境で、「pyaudio」と「porcupine」をインストール。
$ pip install pyaudio
$ pip install pvporcupine
(2) 「アクセスキー」(access key)を以下のサイトで取得。
(3) 以下のコードを作成して実行。
<access_key>には、取得したアクセスキーを指定します。
import struct
import pyaudio
import pvporcupine
# porcupineの生成
access_key = "<access_key>" # アクセスキー
keywards = ["computer"] # ウェイクワードを指定
porcupine = pvporcupine.create(keywords=keywards)
print(keywards)
# オーディオストリームの生成
pa = pyaudio.PyAudio()
audio_stream = pa.open(
rate=porcupine.sample_rate,
channels=1,
format=pyaudio.paInt16,
input=True,
frames_per_buffer=porcupine.frame_length)
while True:
# 音声認識
pcm = audio_stream.read(porcupine.frame_length)
pcm = struct.unpack_from("h" * porcupine.frame_length, pcm)
result = porcupine.process(pcm)
# ウェイクワード検出時の処理
if result >= 0:
print("Wake Word!")
(4) 「computer」と話しかける。
ウェイクワード検出が成功すると、「Wake Word!」と表示されます。
['computer']
Wakeword Word!
4. 独自のウェイクワードの学習
「Picovoice Console」を使って独自のウェイクワードを学習できます。「エンタープライズアカウント」(30日間の無料トライアルあり)が必要になります。
ウェイクワードの学習手順は、次のとおりです。
(1) フレーズを入力。
![画像4](https://assets.st-note.com/production/uploads/images/58800376/picture_pc_c3a2103e958c73ffa9a7b873a0877c6c.png?width=800)
(2) プラットフォームを選択。
![画像4](https://assets.st-note.com/production/uploads/images/58800687/picture_pc_5a4ce3a4b683c6ac7cc8a481aaa3009d.png?width=800)
(3) ブラウザ内でモデルをテスト。
![画像4](https://assets.st-note.com/production/uploads/images/58800323/picture_pc_a09024c9d138b0f9be025805c0866746.png?width=800)
(4) モデルのダウンロード。
[ダウンロード]をクリックして、ウェイクワードモデル(拡張子が.ppnのファイル)のコピーを取得します。
![画像4](https://assets.st-note.com/production/uploads/images/58800241/picture_pc_236b82239dc0a977fd4dd47604c6d98e.png?width=800)
「Picovoice Console」で生成されたモデルは、30日後に期限切れになります。 有効期限前にモデルを再学習する必要があります。
5. ウェイクワードのフレーズの選択
ウェイクワードのフレーズの選択は、正確さとユーザーエクスペリエンスの両方にとって重要になります。
◎ 短いフレーズを避ける
短いフレーズの検出は、特にノイズとエコーが存在する場合、人間と機械の両方にとって困難です。有名なウェイクワードには少なくとも6つの音素があります。「OK Google」は8、「Alexa」は6の音素があります。6未満はお勧めしません。短いフレーズは、「Hey」「OK」を付加することで音素を増やし、ウェイクを意図していること明確にできます。
◎ 長いフレーズを避ける
ウェイクフレーズが長くなると煩雑になり、ユーザーエクスペリエンスが低下する可能性があります。
◎ 多様な音の単語を選択する
様々な音のフレーズを選んでください。音素が異なれば、より明確な判別が可能になり、誤検出の可能性が低くなります。
この記事が気に入ったらサポートをしてみませんか?