AmiVoice Techblog

AmiVoiceの音声認識に関する技術情報・活用方法・組み込み方などを発信するアドバンスト・メディアのテックブログです

Pythonでマイク入力の音声認識してみた

f:id:amivoice_techblog:20210115094116p:plain いちかわちゃん

こんにちは【いちかわちゃん】です。

アドバンスト・メディアという会社で開発をしています。

 

自分用にPython音声認識プログラムを作ったので、ついでに公開します。

github.com

ちょっと作りが雑な面があるので、参考程度にするようお願いします。

 

以下の環境で動かしています。

OS Ubuntu18.04
アーキテクチャ AMD64
GCC 7.5.0

 

手順

 1.AmiVoice APIに登録

 2.プログラムのをダウンロード&実行

 

動かし方

1.AmiVoice APIに登録する。

acp.amivoice.com

登録したらAPPKEYをコピー

 

 2.プログラムのをダウンロード&実行

以下のコマンドで音声認識を開始出来ます。 XXXの部分は1の作業でコピーしたAPPKEYを貼り付けしてください。

$ git clone https://github.com/r-ichikawa-amivoice/ami_speechrecognizer_py
$ bash run.sh a=XXX

 

そのあと適当にしゃべると結果が出ます。


解説

main.pyは以下のパラメーターをサポートしています。

a AmiVoice APIサイトのAPPKEYを指定。
r

入力の形式を指定。
"mic"を指定するとマイクから入力。
それ以外の文字列は音声ファイル名として扱い、ファイル認識になる。

o

ログの出力形式を指定。
"console"を指定するとコンソールにログを出力。
"date"を指定すると、yyyy-MM-dd.txtのファイルとしてログを出力。
それ以外の文字列はファイル名として扱い、その名前のファイルにログを出力。

l

ログレベルを指定。指定された値以上のログレベルもものを出力。
"0":DEBUG-デバック用のログ
"1":INFO-通常のログ
"2":WORN-注意のログ
"3":ERROR-エラーのログ

 

マイクを変えたい場合

現状はpulseというマイクから情報を取ってくるようになってます。

変えたい場合はrec.audio_sourceらへんの数値を弄ってください。

指定するデバイスを選ぶときはrec.get_device()をして、使いたいもののindexを指定してください。

 

チャンネル数を変えたい場合

rec.audio_format["CHANNELS"]の値を変えてください。

とは言え、AmiVoice APIは現状で1chしか対応していないので、変えないのが無難です。

チャンネル分解して渡したいときは以下みたいなソースを入れとくといいかも。

from functools import partial
def parse(audio, length, obj, amivoice):
    data = obj.channnel_parse(audio)
    amivoice.write(data[0], int(length/obj.audio_format["CHANNELS"]))

rec.recorder_write_func = partial(parse, obj = rec, amivoice = stt)

 

検討すること

/amivoiceフォルダは最新のソースか分かりません。

更新したいときは以下から取ってくるといいかも。

docs.amivoice.com

 

まとめ

Python音声認識をすることが出来るようになりました。

この記事を書いた人

  • いちかわちゃん

    世の中には2種類の人間しかいない。 俺か、俺以外か。