Porcupine WakeupWord - YUKAI/codama-doc-r0 GitHub Wiki
ウェイクアップ・ワードを作成する
ウェイクアップ・ワードとは「Alexa」や「Hey Siri」のように音声アシスタントを起動するためのフレーズです。
picovoiceのporcupineというエンジンを使用すると、オリジナルのウェイクアップ・ワードを検知できるようになります。日本語にも対応しているので、自由にフレーズを指定することができます。 今回は「こだま」をウェイクアップ・ワードに設定してみましょう。
1. porcupineのアクセスキーを取得
まずはporcupineの公式サイトでアカウントを新規作成しましょう。 アカウントを作成すると、アクセスキーを取得することができます。
codama-doc-r0/examples
ディレクトリ内に.env
ファイルを新規作成し、以下のようにアクセスキーを記入しておきます。
ACCESS_KEY = "YOUR_ACCESS_KEY"
2. porcupineでウェイクアップ・ワードを登録
公式ガイドに従ってウェイクアップ・ワードを登録します。
Picovoice Consoleのページで「Porcupine Wake Word」をクリックして、ウェイクアップ・ワード作成のページに移動します。
言語を日本語に設定し、好みのウェイクアップ・ワードを入力してブラウザ上で検知されることを確認します。 動作を確認できたら、プラットフォームをRaspberry Piに設定してダウンロードします。
ダウンロードした設定ファイル(.ppn)をcodama-doc-r0/examples
ディレクトリ内に移動させてください。
※日本語を使う場合は、日本語用のモデルファイル(.pv)が必要ですが、このリポジトリにはデフォルトで入れています。
3. パッケージのインストール
porcupineを使うためのパッケージをインストールしましょう。
$ pip install pvporcupine
4. プログラムを作成
以下のpythonプログラムをcodama-doc-r0/examples
ディレクトリ内にwakeup_word.py
という名前で保存します。
import pvporcupine
import queue, sys
import numpy as np
import sounddevice as sd
import os
from dotenv import load_dotenv
load_dotenv('.env')
AUDIO_DEVICE_NUM = 8
# 録音の設定
SAMPLE_RATE = 16000
CHANNELS = 1
sd.default.device = AUDIO_DEVICE_NUM
# porcupineの設定
porcupine = pvporcupine.create(
access_key=os.environ.get("ACCESS_KEY"),
keyword_paths=["kodama_ja_raspberry-pi_v2_2_0.ppn"],
model_path="porcupine_params_ja.pv"
)
q = queue.Queue()
def recordCallback(indata, frames, time, status):
if status:
print(status, file=sys.stderr)
q.put(indata.copy())
def run():
try:
stream = sd.InputStream(
samplerate=SAMPLE_RATE,
dtype="int16",
blocksize=porcupine.frame_length,
channels=CHANNELS,
callback=recordCallback,
)
stream.start()
print("Start")
while True:
if not q.empty():
data = q.get(block=False)
data = np.reshape(data, [data.shape[0]])
keyword_index = porcupine.process(data)
# "こだま"を検知したら
if keyword_index == 0:
print("Detected: こだま")
except KeyboardInterrupt:
pass
finally:
sd.stop()
while not q.empty():
q.get(block=False)
if __name__ == "__main__":
run()
5. プログラムの実行
wakeup_word.py
を実行すると、「こだま」と話しかけたときに「Detected: こだま」と出力されます。
$ python wakeup_word.py
これでオリジナルのウェイクアップ・ワードを作成できるようになりました。
次は録音した音声をテキストに変換するに進みましょう。