Raspberry PiでNHKネットラジオを再生した

これは楽でしたね。結構まわりくどいやり方でやっている方もいましたが。
パイソンも好きかもしれない。

# -*- coding: utf-8 -*-
import os

os.system('/home/pi/aquestalkpi/AquesTalkPi " NHKラジオ第1福岡を選局します " | aplay -Dhw:1,0')
os.system('/home/pi/aquestalkpi/AquesTalkPi " ラジオを停止させる場合はアルファベットの Q キーを押してください " | aplay -Dhw:1,0')

os.system('omxplayer --timeout 60s -o local https://nhkradiolkr1-i.akamaihd.net/hls/live/512088/1-r1/1-r1-01.m3u8')

Raspberry Piで対話した

ドコモの音声認識APIと雑談対話APIを使って雑談することにしました。
なお、インターネット上の情報では簡単にできると謳っていましたが簡単ではありませんでした。
理由は手元にあるマイクのサンプリング周波数が指定できなかった為です。
サンプリング周波数を指定できなければ音声認識APIが使用できません。
なので一旦マイクで録音して録音ファイルを作成後、エンコードして音声認識APIにぶん投げることでテキスト化に成功しました。

規格外のマイクでも実現可能です。諦めないでください。

また、インターネット上の情報では会話が続かないコードでした。
雑談対話APIでは「コンテキストID」が鍵になります。
雑談対話APIで対話を開始すると「コンテキストID」が自動生成されるので、それを次の会話と同時送信することで会話が続くようになります。
他を参考にして実現させました。

「コンテキストID」の送信に成功すると「しりとり」が可能になります。 お試しください。

# -*- coding: utf-8 -*-
import os
import time
import requests
import json

os.system('mpg321 zatudankaishi.mp3')

os.system('AUDIODEV=hw:0 rec -c 1 -r 16k maikunokikakuuzee.wav trim 0 5')
os.system('mpg321 zatudankaishi.mp3')
os.system('mpg321 zatudankaishi.mp3')
#これでできます
os.system('sox maikunokikakuuzee.wav test.wav channels 1 rate 16k')
time.sleep(1)

docomo_api_key = 'xxxxx'

path = '/home/pi/test.wav'
url = 'https://api.apigw.smt.docomo.ne.jp/amiVoice/v1/recognize?APIKEY={}'.format(docomo_api_key)
files = {'a': open(path, 'rb'), 'v':'on'}
r = requests.post(url, files = files)
message = r.json()['text']
print message

endpoint = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=REGISTER_KEY'
url = endpoint.replace('REGISTER_KEY', docomo_api_key)
utt_content = message
payload = {'utt': utt_content, 'context': ''}
headers = {'Content-type': 'application/json'}
r = requests.post(url, data = json.dumps(payload), headers = headers)
data = r.json()
response = data['utt']
context_get = data['context']

print response
print context_get

os.system('/home/pi/aquestalkpi/AquesTalkPi " '+ response.encode('utf-8') +' " | aplay -Dhw:1,0')

while True:
    time.sleep(1)
    os.system('mpg321 zatudankaishi.mp3')
    
    os.system('AUDIODEV=hw:0 rec -c 1 -r 16k maikunokikakuuzee.wav trim 0 5')
    os.system('mpg321 zatudankaishi.mp3')
    os.system('mpg321 zatudankaishi.mp3')
    os.system('sox maikunokikakuuzee.wav test.wav channels 1 rate 16k')
    time.sleep(1)
    
    path = '/home/pi/test.wav'
    url = 'https://api.apigw.smt.docomo.ne.jp/amiVoice/v1/recognize?APIKEY={}'.format(docomo_api_key)
    files = {'a': open(path, 'rb'), 'v':'on'}
    r = requests.post(url, files = files)
    message = r.json()['text']
    print message

    endpoint = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=REGISTER_KEY'
    url = endpoint.replace('REGISTER_KEY', docomo_api_key)

    utt_content = message

    payload = {'utt': utt_content, 'context': context_get}
    headers = {'Content-type': 'application/json'}

    r = requests.post(url, data = json.dumps(payload), headers = headers)
    data = r.json()
    
    response = data['utt']
    context = data['context']
    
    print response
    print context

    os.system('/home/pi/aquestalkpi/AquesTalkPi " '+ response.encode('utf-8') +' " | aplay -Dhw:1,0')

ラズパイでは工夫すればAIスピーカーのようなことができます。
また、赤外線リモコンと組み合わせると面白いことができそうです。

衛星チューナはPCなので、それは面白そうですが行おうとする思いは今の所ありません。

Raspberry Piで東海新報世迷言を読み上げさせた

ラズパイでNHKニュースを読み上げさせている人がいました。
大変興味深い内容でしたので、私は東海新報世迷言を読み上げさせてみることにしました。

パイソンとアクエストークで実現です。
抽出は美しい石鹸を用いました。


これたのしい!!!

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from urllib2 import urlopen
from bs4 import BeautifulSoup
import re
import os

url = 'https://tohkaishimpo.com/yomaigoto/'
html_page = urlopen(url)
soup = BeautifulSoup(html_page, 'html.parser')

for yomaigoto_text in soup.find_all('div', attrs={'class':'postText_noimage'}):
    print yomaigoto_text.get_text()

os.system('/home/pi/aquestalkpi/AquesTalkPi "東海新報 世迷言 です" | aplay -Dhw:1,0')
os.system('/home/pi/aquestalkpi/AquesTalkPi "'+ yomaigoto_text.get_text() +'" | aplay -Dhw:1,0')

ウェブスクレイピングって素敵ですよね?

Raspberry PiでAmazon Echo

前々からやってみたかったラズパイ。
シングルボードコンピュータですが可能性は無限大です。

今回はアマゾンエコーをラズパイに入れてAIスピーカーにしました。

私の周りに電子工作がとても得意そうな方が居そうです。
前はもう1人いましたが、それはおじゃんになりました。
それは仕方がないので諦めることにしましょう。

アレクサに「おっけーぐーぐる」と言ってみると
『その名前には応えることができません』と、帰ってきました。
ごもっともです。

歌は歌ってくれました。