python で日本語の音声認識をリアルタイムで実施できるライブラリとして
Speech recognitionがあります。英語であればオフラインも対応しています
windows向けapiとして無料で日本語認識をできますので
インストールから使い方まで説明致します。
本日の伝えたいこと
✔ pythonで無料で音声認識を実施したいときは、Speech recognitionでgoogleと連携した音声認識がすぐに出来る
困ったこと
python 音声認識をしたくてもwindowsでリアルタイムで実施出来なかった
内容
speech recognition モジュールを使い音声認識をする
メリット
目的に応じて
・日本語のリアルタイム音声認識が簡単にできる
・英語の音声認識であればオフラインでも音声認識実施できる(精度低め)
解決方法
pythonでspeech recognitionを使う事前準備
以下サイトを参考にさせていただきました

※オフラインでの音声認識を実施する場合は、Pocket Sphinxが対応しておらず3.6.8でないと実施できません
speech recognitionのinstallが必要となるため、下記pipコマンドにてインストール
>>pip install SpeechRecognition
>>pip install pyaudio
>>pip install pocketsphinx
[2021.5.3 追記] どうしてもPython 3.7, 3.8, 3.9で使いたいという場合は、
オフラインのみでしか使用できないが、下記からダウンロードし、直接インストールすると、
問題なくインストールできる。(ただし非公式のため注意)
※繰り返しになるが、3.7以降はPocket Sphinxは非対応なので、Google APIでオンライン版のみが使用できる
>>pip install PyAudio‑0.2.11‑cp38‑cp38‑win_amd64.whl
使い方
音声待機状態にする
speech recognitionのRecognizerクラスをインスタンス化し、
listen関数にて待機する。
序盤におまじないとして、ambient_noise(定常化ノイズ)を除去する関数を入れておく
r = sr.Recognizer()
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
print(“=== 何か、話しかけてください ===”)
audio = r.listen(source)
Googleに音声を飛ばし、音声認識結果を受信する
下記コマンドで実施できる。
引数でlanguageを指定できるので、そこで日本語を指定すると音声認識の精度が上がる
text = r.recognize_google(audio, language=’ja-JP’)
ちなみに、オフラインでどうしても実施したい場合は
英語であれば、CMU Sphinxを使うことで実施できる。
recognizer_instance.recognize_sphinx
ただし、精度はかなり低いので要注意だ。
[2021.5.3 更新]
下記記事にてCMU Sphinxを使ってオフラインでも日本語認識させる方法記事にしました
サンプルコード
下記では、音声認識結果に”hey”と”google”が入っていた場合に
特定のバッチファイルをサブプロセスで起動するものにしている。
あとはこの内容を鍛えることで、自作Siriが完成していく
# -*- coding: utf-8 -*-
import speech_recognition as sr
import subprocess
def Getspeaking_value():
r = sr.Recognizer()
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
print("=== 何か、話しかけてください ===")
audio = r.listen(source)
print("[o] ===> オーディオGET")
try:
print("=== 音声解析中 ===")
text = r.recognize_google(audio,language="ja-JP")
print("You said : " + text)
except:
pass
# Heyと Googleが入っていたら特定のバッチを起動する
if (("Hey" in text) & ("Google" in text)):
subprocess.run(“xxx.bat”)
if __name__ == "__main__":
Getspeaking_value()
実際の現場で求められること
楽しいの間違いないが、音声認識を日頃使うことがあるか。と言われるとまずないだろう。
議事メモが音声認識で出来たら便利かな?ぐらいなものである
まとめ
✔ Speech recognitionを使うと、googleと連携した音声認識がすぐに出来る
✔ オフライン実行は、精度は低いがCMU Sphinxを使うとできる
コメント
[…] […]