忍者ブログ

設備のマニアどっとこむ

設備、電子工作、DIYのブログ!

ラズパイとjuliusで音声認識させたものをslackに表示させた話

ちょっと出先でも家の様子がわかるものを作ってみました。



オープンソースのjulius、USBマイクを使います。






安いマイクなので正直おすすめできません…。



まずはUSBマイクの優先度を変更します。




cat proc/asound/modulesコマンドで下記の様になっているはずです。



snd_bcm_2835 0


snd_usb_audio 1



USBを優先するため、これを逆にします。sudo nano /etc/modprobe.d/alsa-base.conf コマンドで以下のファイルを作ってください


options snd slots=snd_usb_audio,snd_bcm2835options


snd_usb_audio index=0


options snd_bcm2835 index=1



そうするとcat proc/asound/modulesではUSB優先が確認できます。


snd_usb_audio 0


snd_bcm_2835 1




続いてマイクの準備ができたらjuliusのビルドとインストールをします。参考になるサイトはいろいろあるのですが、このサイトが一番わかりやすかったです。

julius -C j.jconf -nostripコマンドで<<<please speak>>>と出れば成功です。



 


↑こんな感じです。



音声認識させたデータを使うにはjulius -C j.jconf -nostrip -module というコマンドを使い、IPアドレスをpythonコードに入力して使います。pythonとslackの連携方法はこちらを参考にしてください。




import time



import socket



import string



import json



import requests





host = 'ラズパイのIPアドレス'



port = 10500



client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)



client.connect((host, port))



data = ""





while True:



      data = client.recv(4096).decode('utf-8')



 



      strTemp = ""



      for line in data.split('\n'):



        index = line.find('WORD="')





        if index != -1:



            line = line[index + 6:line.find('"', index + 6)]



            if line != "[s]":



                strTemp = strTemp + line





      if strTemp != "":



        print("結果:" + strTemp)



  



      SLACK_URL = "https://hooks.slack.com/**********************************"





      def send_slack():



          content = strTemp



          payload = {



             "text": content,



             "icon_emoji": ':snake:',



          }



          data = json.dumps(payload)



          requests.post(SLACK_URL, data)



      send_slack()



      data = ""




朱記のところは任意のIPアドレスやslackのトークンをつかってください。




moduleモードでjuliusが動いている最中に上記のコードを走らせると、slackに認識した


言葉を表示していきます。



 



・・辞書ファイルをちゃんとつくらないとダメかな。



子供が泣いているのがわかるくらいにしか使えません。
(実際泣いている音声です)


→7/20 辞書ファイル作ってみました

















拍手[1回]

PR

コメント

翻訳(Translate)

AD

シェアしてね

プロフィール

HN:
アルティメット雅史
性別:
男性
自己紹介:
製油所、データセンター、化学工場を渡り歩いた設備のマニア
最近はarduino,Raspberry pi等の電子工作にハマる。
取得資格は電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトほか

カウンター

お問い合わせ

忍者アクセスランキング