ラズタンク制作・メディア特集

ラズベリーパイを搭載したトラックベルト駆動(キャタピラ)の走行車を組み立てした。次はメディア系の機能を搭載する。

本日のメニュー

  1. メディアプレーヤー omx
  2. 音声合成AI Jtalk
  3. 音楽プレーヤー aplay
  4. 百科事典 Wikipedia検索
  5. サーボモーター

準備[PCでラズパイにリモートデスクトップ接続]

Windows の DOS でラズパイから応答があることを検査する

C:\Users\kano> ping razpi01.local -4
192.168.1.41 からの応答: バイト数=32 時間 <1ms
192.168.1.41 からの応答: バイト数=32 時間 <1ms
192.168.1.41 からの応答: バイト数=32 時間 <1ms

ラズパイに接続する。リモートデスクトップのコマンド名は[mstsc.exe]

C:\Users\kano> mstsc /v:razpi01.local

自分のラズパイのユーザーIDとパスワードでログインします。

音楽プレーヤー[omxplayer]

RaspberryPi用軽量メディアプレーヤー(mp3音楽, mp4動画)
python ディレクトリに移動する

$ cd python

使い方:コマンドラインで音楽ファイルを鳴らすメディアプレーヤー。Linuxでコマンドを実行します(pythonではない)

$ omxplayer music.mp3 –o local --vol -500

使い方:インターネットのWEBサイトのファイルをダウンロードするコマンド。無料の音楽ファイルをダウンロードできる。

$ wget <URL>

omxplayerコマンドのオプション「–o local」はイヤホンジャックへOutputです

音声合成AI [Open JTalk]

日本の大学で開発された音声合成AI技術。テキストを音声に変換します。
使い方:ダブルコーテーションで囲った日本語を読み上げます。

$ ./jtalk.sh "がんばれ。みんな"

調べる:[jtalk.sh]はプログラムコードです。ファイルの中身を見てみましょう

$ cat jtalk.sh

#!/bin/bash
# ファイル名:jtalk.sh
# ファイルを指定
# chmod +x jtalk.sh # 実行権限をつけること
voice=/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice
dic=/var/lib/mecab/dic/open-jtalk/naist-jdic
# パラメータを定義(一行で入力しますが表示の都合で改行しています)
option="-m $voice \
  -s 30000 \
  -p 150 \
  -a 0.03 \
  -u 0.0 \
  -jm 1.0 \
  -jf 1.0 \
  -x $dic \
  -ow output.wav“

# テキストを音声データに変換実行
echo "$1" | open_jtalk $option

# 音声をスピーカーで鳴らす。
aplay -q -D hw:0,0 output.wav

音楽プレーヤー [aplay]

使い方:[aplay]で音声wavファイルを鳴らす。鳴らないときはデバイス番号が違うかも

$ aplay  -q  -D  hw:0,0  output.wav

使い方:[aplay]でデバイス番号を調べる

$ aplay  -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Headphones [bcm2835 Headphones], デバイス 0: bcm2835 Headphones [bcm2835 Headphones]  
 サブデバイス: 8/8
  サブデバイス #0: subdevice #0
  サブデバイス #1: subdevice #1

音声合成AI [mei ボイス]

「めいちゃんの声」に変えてみます。めいちゃんとは、JTalkを開発した名古屋大学のデジタルサイネージにある女性キャラクターが話す声に使われているようです。タクミくんもいるとのこと。
使い方:「jtalk.sh」でなく 「jtalk_mei.sh」

$ ./jtalk_mei.sh "めいちゃんの声です“, “normal”
$ ./jtalk_mei.sh "めいちゃんの声です“, “angry”
$ ./jtalk_mei.sh "めいちゃんの声です“, “happy”
$ ./jtalk_mei.sh "めいちゃんの声です“, “sad”

コマンド「jtalk_mei.sh」の引数で normal や angry を受け取ったら、下記の音響モデルを切り替えています。

# 女性の声(メイちゃん)
if [ $2 == "normal" ]; then
  voice=/usr/share/hts-voice/mei/mei_normal.htsvoice
elif [ $2 == "angry" ]; then
  voice=/usr/share/hts-voice/mei/mei_angry.htsvoice
elif [ $2 == "happy" ]; then
  voice=/usr/share/hts-voice/mei/mei_happy.htsvoice
elif [ $2 == "sad" ]; then
  voice=/usr/share/hts-voice/mei/mei_sad.htsvoice
else
  voice=/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoicefi

百科事典 Wikipedia検索

インターネットのWikipediaで単語を調べる
使い方:python プログラムを作る。まず新しいファイルを作ります。

$ nano wiki.py

新しいファイルに下記コードを書きます。例として「ホバークラフト」という単語を調べます

import  wikipedia

wikipedia.set_lang("ja")
result  =  wikipedia.page("ホバークラフト")
print(result.summary)

使い方:python プログラムを実行する

$ python  wiki.py

毎回調べたい単語を、コードに記載するのは面倒だよね。コマンド入力で検索したいですね。サンプルコードを用意したので中を調べてください。

$ python   wiki-speech.py   “アップルパイ”

検索できましたか?

まとめ

これを使って何ができそうですか?

  • メディアプレーヤー omx
  • 音声合成AI Jtalk
  • 音楽プレーヤー aplay
  • 百科事典 Wikipedia検索

おまけ:サーボモーター復習

目標:ラズタンクを魔改造🦹 移動するだけじゃない。何かが動くんだ。

使い方:サーボモーターの動作テスト

$ python servo.py

真ん中(7.0)が初期値 → 左(12.0)に移動 → 右(2.0)に移動する

使い方:左右に少しずつ、ずーっと繰り返す

$ python   servo1.py

使い方:キーボード操作で動かす

$ python   servo2.py
[a]90 [s]++ [d]0 [f]-- [g]-90  [q]end

まだ使っていない空いているラズパイGPIOを選びます。ピン番号とGPIO番号を調べるコマンド

$ pinout

コメントを残す