忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・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)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31