Yuki Nakata's Blog

天才 中ちゃん♪

カテゴリ: Raspberry PI


Raspberry Piに初音ミクの声でしゃべらせよう。

もちろんウェブからコントロールできるようにします。

21世紀的ですね。

必要なものはOpen Jtalk と初音ミクの声データ。

$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic htsengine libhtsengine-dev hts-voice-nitech-jp-atr503-m001

以下のサイトを参考にしてください。
jsay スクリプトを保存して

$ sudo chmod +x jsay
$ sudo cp jsay /usr/bin/


MMDAgend Example-1.3.1をダウンロード

$ unzip MMDAgend_Example-1.3.1.zip
$ sudo cp -R MMDAgend_Example-.1.3.1/Voice/* /usr/share/hts-voice/

これで話すようになります。
$ jsay こんにちわ

今度は初音ミクの声をダウンロードしましょう。

ここからTYPE-βの方をダウンロード 解凍して声データを
/usr/share/hts-voice/mei_happy/
に上書きしてください。

初音ミクの声で話すようになります。

私の環境ではhttp://192.168.0.101/miku/
にindex.phpを置いてウェブからコントロールできるようにしています。


<?php
//Miku Talk

if($_POST["talk"]) {
exec("jsay ".$_POST["talk"]);
}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Miku Talk</title>
<link rel="stylesheet"
  href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js">
</script>

<style type="text/css">  
<!-- 
    #header, #footer {
          background-color: #f09199;
color: #ebf6f7;
}
-->  
</style>
</head>
<body>
<div data-role="page">
  <div data-role="header" id="header">
    <h1>Miku Talk</h1>
  </div>
  <div role="main" class="ui-content">
    

<form action="index.php" method="post">
  
  しゃべる内容:<br />
  <textarea name="talk" cols="30" rows="5"></textarea><br />
  <br />
  <input type="submit" value="しゃべる" />
</form>


  </div>
  <div data-role="footer" id="footer">
    <h3><a href="http://www.nakatayuki.com/" >nakata yuki</a></h3>
  </div>
</div>
</body>
</html>


参考サイト


今回はラズベリーパイにしゃべらせます。

AquesTalk Piを使うとラズベリーパイで簡単に音声を出力させることができます。

もちろんブラウザからリモートコントロールできるようにしますよ。

21世紀的ですね。

以下のリンクからAquesTalk Piをダウンロードしてください。

http://www.a-quest.com/products/aquestalkpi.html 

$ sudo chmod +x  AquesTalk

$ sudo cp AquesTalk /usr/bin/

私の環境ではウェブサーバーとしてnginxを利用しています。

/usr/share/nginx/www/ ここがウェブルートとなっています。

ここにindex.phpを置くとブラウザで表示されるわけですね。

ここにtalk サブディレクトリを作成してindex.phpファイルを置いています。

http://192.168.0.101/talk/

ここにアクセスするとラズベリーパイが話してくれるというわけ。

talkディレクトリの中にAquesTalkに付いてきた aq_dicを入れてください。

talk/aq_dic/aq_user.dic
talk/aq_dic/aq_dic.bin
talk/aq_dic/readme.txt
という構成になっています。

index.phpという名前で/usr/share/nginx/www/talk/に保存してください。


<?php
//AquesTalk Pi Web

if($_POST["talk"]) {
exec("AquesTalkPi '".$_POST["talk"]."' | aplay");
}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>AquesTalk Pi Web</title>
<link rel="stylesheet"
  href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js">
</script>

<style type="text/css">  
<!-- 
    #header, #footer {
          background-color: #478384;
color: #fef4f4;
}
-->  
</style>
</head>
<body>
<div data-role="page">
  <div data-role="header" id="header">
    <h1>AquesTalk Pi Web</h1>
  </div>
  <div role="main" class="ui-content">
    

<form action="index.php" method="post">
  
  しゃべる内容:<br />
  <textarea name="talk" cols="30" rows="5"></textarea><br />
  <br />
  <input type="submit" value="しゃべる" />
</form>


  </div>
  <div data-role="footer" id="footer">
    <h3><a href="http://www.nakatayuki.com/" >nakata yuki</a></h3>
  </div>
</div>
</body>
</html>

 
参考にさせていただいたサイト
ラズベリーパイがWEB経由でしゃべるよ
 

radiko2


ラズベリーパイでラジオのradikoを再生しよう! の続きになります。

前回作成したindex.phpにcssデザインを施して見栄えよくしましょう。

スマホからアクセスするので、JQUERY MOBILEを使って
CSSデザインしてみました。

格好良くなりましたね。

index.phpで保存してください。


<?php
//Radiko Player
//http://www.nakatayuki.com


if(isset($_GET['id'])){

$id = $_GET['id'];
if($id=="stop"){
exec("killall mplayer");
}else if($id=="CCL"){
exec("killall mplayer");
exec("play_radiko.sh CCL", $e);
}else if($id=="802"){
exec("killall mplayer");
exec("play_radiko.sh 802", $e);
}else if($id=="ABC"){
exec("killall mplayer");
exec("play_radiko.sh ABC", $e);
}else if($id=="MBS"){
exec("killall mplayer");
exec("play_radiko.sh MBS", $e);
}else if($id=="OBC"){
exec("killall mplayer");
exec("play_radiko.sh OBC", $e);
}else if($id=="RN1"){
exec("killall mplayer");
exec("play_radiko.sh RN1", $e);
}else if($id=="RN2"){
exec("killall mplayer");
exec("play_radiko.sh RN2", $e);
}else if($id=="CRK"){
exec("killall mplayer");
exec("play_radiko.sh CRK", $e);
}else if($id=="KISSFMKOBE"){
exec("killall mplayer");
exec("play_radiko.sh KISSFMKOBE", $e);
}else if($id=="HOUSOU-DAIGAKU"){
exec("killall mplayer");
exec("play_radiko.sh HOUSOU-DAIGAKU", $e);
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Radiko Player</title>
<link rel="stylesheet"
  href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js">
</script>

<style type="text/css">  
<!-- 
    #header, #footer {
          background-color: #ffea00;
color: #493759;
}
-->  
</style>
</head>
<body>
<div data-role="page">
  <div data-role="header" id="header">
    <h1>Radiko Player</h1>
  </div>
  <div role="main" class="ui-content">
    <!--リストを準備-->

<ul data-role="listview" data-inset="true">
        <li><a href="index.php?id=stop">stop</a></li>
    </ul>

    <ul data-role="listview" data-inset="true">
        <li><a href="index.php?id=802">FM 802</a></li>
<li><a href="index.php?id=CCL">FM COCOLO</a></li>
<li><a href="index.php?id=ABC">ABC Radio</a></li>
<li><a href="index.php?id=MBS">MBS Radio</a></li>
<li><a href="index.php?id=OBC">OBC Radio Osaka</a></li>
<li><a href="index.php?id=RN1">Radio NIKKEI 1</a></li>
<li><a href="index.php?id=RN2">Radio NIKKEI 2</a></li>
<li><a href="index.php?id=CRK">CRK Radio Kansai</a></li>
<li><a href="index.php?id=KISSFMKOBE" >Kiss FM KOBE</a></li>
<li><a href="index.php?id=HOUSOU-DAIGAKU" >HOUSOU DAIGAKU</a></li>
    </ul>
  </div>
  <div data-role="footer" id="footer">
    <h3><a href="http://www.nakatayuki.com/" >nakata yuki</a></h3>
  </div>
</div>
</body>
</html>

 

radiko
ラズベリーパイでFM COCOLOや FM 802のラジオを聞きたいですよね。

ラズベリーパイを使えば1日中radikoを聞くことができますよ。1か月聞きっぱなしでもコストは電気代の約50円だけ。

しかも、スマホやPCからラズベリーパイのラジオをリモートコントロールできます。

21世紀的ですね。さっそくやってみましょう。

. mplayerとrtmpdumpをインストールします。

$ sudo apt-get install mplayer

$ sudo apt-get install rtmpdump swftools libxml2-utils

mplayerで持っている音声ファイルmp3の音が出るか試してみてください。

$ mplayer 音声ファイル.mp3

音が流れたら成功です。


2. play_radiko.shをダウンロード

play_radiko.sh シェルスクリプトを下のリンクからダウンロードしてください。
 https://gist.github.com/ihsoy-s/5292735

play_radiko.sh を編集します。
作成するディレクトリを指定します。

私はoutdirを下の変更しました。
outdir="/home/pi/radio/"

これで /home/pi/radio/ディレクトリが作成されるようになります。

$ sudo chmod +x play_radiko.sh

$ sudo cp play_radiko.sh /usr/bin/play_radiko.sh

3. ラジオを再生してみよう

試しにFM COCOLOを流してみましょう。
$ play_radiko.sh CCL 

FM 802を再生してみましょう。
$ play_radiko.sh 802

CCLがFM COCOLOです。802がFM 802。
ラジオ曲の放送局IDは以下のリンクで確認できます。
http://www.dcc-jpl.com/foltia/wiki/radikomemo
 
4. ブラウザからリモートコントロールしよう。
ラズベリーパイからラジオを再生することができたら、ブラウザからリモートコントロールできるようにしましょう。

ここまでは簡単でした。
実はここからが本題で、難しいかもしれません。

今回ここは解説を省略します。

IPアドレスを固定してウェブサーバーを立ててください。

私は軽量のnginxとphpでウェブサーバーを立てています。定番のapacheでもいいです。

IPアドレスは192.168.0.101にしています。

IPアドレスは毎回起動時に変動すると面倒なので固定IPアドレスにします。

5. ウェブサーバーから音を鳴らせるようにしよう。
ブラウザからコマンドを実行させて音を鳴るようにする必要があります。

$ usermod -G www-data, audio www-data
要するにウェブサーバーをaudioグループに追加しています。

apacheやnginx, ともにデフォルトでwww-dataになっていますので、これで良いと思います。

更新の仕方が分からないので、ここで一度再起動しました。

6. index.phpを作成しよう。

ウェブサーバーを無事に立てれたとします。

以下のphpをindex.phpで保存して、ウェブルートに置いてください。


<?php
//radiko player
//http://www.nakatayuki.com/


if(isset($_GET['id'])){

$id = $_GET['id'];
if($id=="stop"){
exec("killall mplayer");
}else if($id=="CCL"){
exec("killall mplayer");
exec("play_radiko.sh CCL", $e);
}else if($id=="802"){
exec("killall mplayer");
exec("play_radiko.sh 802", $e);
}else if($id=="ABC"){
exec("killall mplayer");
exec("play_radiko.sh ABC", $e);
}else if($id=="MBS"){
exec("killall mplayer");
exec("play_radiko.sh MBS", $e);
}else if($id=="OBC"){
exec("killall mplayer");
exec("play_radiko.sh OBC", $e);
}else if($id=="RN1"){
exec("killall mplayer");
exec("play_radiko.sh RN1", $e);
}else if($id=="RN2"){
exec("killall mplayer");
exec("play_radiko.sh RN2", $e);
}else if($id=="CRK"){
exec("killall mplayer");
exec("play_radiko.sh CRK", $e);
}else if($id=="KISSFMKOBE"){
exec("killall mplayer");
exec("play_radiko.sh KISSFMKOBE", $e);
}else if($id=="HOUSOU-DAIGAKU"){
exec("killall mplayer");
exec("play_radiko.sh HOUSOU-DAIGAKU", $e);
}
}
?>
<html>
<head>
<meta name="viewport" content="width=device-width">
</head>
<body>
<p><a href="index.php?id=stop">stop</a></p>
<ul>
<li><a href="index.php?id=802">FM 802</a></li>
<li><a href="index.php?id=CCL">FM COCOLO</a></li>
<li><a href="index.php?id=ABC">ABC Radio</a></li>
<li><a href="index.php?id=MBS">MBS Radio</a></li>
<li><a href="index.php?id=OBC">OBC Radio Osaka</a></li>
<li><a href="index.php?id=RN1">Radio NIKKEI 1</a></li>
<li><a href="index.php?id=RN2" >Radio NIKKEI2</a></li>
<li><a href="index.php?id=CRK" >CRK Radio Kansai</a></li>
<li><a href="index.php?id=KISSFMKOBE" >Kiss FM KOBE</a></li>
<li><a href="index.php?id=HOUSOU-DAIGAKU" >HOUSOU DAIGAKU</a></li>
</ul>
</body>
</html>
 
 radiko player
パソコンからラズベリーパイにアクセスしたところ。

IPアドレスにアクセスします。私の環境ではhttp://192.168.0.101 です。
ラジオ曲をクリックするとラジオの再生が始まります。
STOPで停止ができます。

ラズベリーパイでラジオライフを楽しんでくださあい。でわ。 

Z120BW_

Raspberry PI2のスピーカーとしてロジクールのZ120BWを買いました。

JBL PEBBLESと悩みましたが、こっちにしました。

電源はUSB端子から、音はステレオミニジャックから取ります。

つなぐだけで音が出ます。

USB機器をつなぐとラズベリーパイが落ちることがあるようですが、これは大丈夫です。

音量をMAXにしても問題ありません。

音量についてはラズベリーパイの方で最大にしておいて、スピーカーの方でコントロールするといいです。

ボリュームの調節はalasamixerコマンドで行います。

alsamixer

+キーで音量を上げ、-キーで下げます。 ボリュームを最大にしておきましょう。 Escキーで終了。

 
我が家のラズベリーパイちゃん。

小型コンピューターには小型スピーカーが似合います。

1500円スピーカーでこれは素晴らしいです。 

mpdroid
我が家ではいらない子になってしまったラズベリーパイ2をミュージックサーバーに仕立て上げます。

まずミュージックサーバーとはですが、ラズベリーパイを音楽プレイヤーにすることを意味します。

それをパソコンやスマホからコントロールするわけです。

パソコンやスマホから無線で操ると格好いいです。


ラズベリーパイがサーバー、リモコンのパソコンやスマホがクライアントになるわけですね。

オーディオとなると何故かみんな複雑なことをしたがるわけですが、簡単な説明を目指します。

ミュージックサーバーといってもいくつか専用ソフトがあるのですがMPDを使います。

他にVolumioというのがありますが、面倒くさすぎるので却下です。

 

凝ったことをしようとするとNasを使ったり(音楽ファイルを別の場所に用意する)、
D-Aコンバータを使ったり(音を良くする)、
アンプにつなぐ(音を大きくする)、
とか出来るわけですがそんなもの要りません。

とりあえずシンプルなミュージックサーバーから始めましょう。 


仕組みはラズベリーパイにmp3の音楽データをぶっこみます。

スピーカーかヘッドホンから音を出します。
ラズベリーパイ2にはイヤホンジャックが付いているのでそこにつないでください。


ではMPDのインストールからしていきましょう。

sudo apt-get install mpd mpc
MPDを起動します。
sudo service mpd start
MPDの設定ファイルを編集します。#を外してください。 音楽ディレクトリを変更します。初期は/var/lib/mpd/music ディレクトリになっています。 /home/ユーザー/music などに変更しておいた方が分かり易いと思います。
sudo vi /etc/mpd.conf
auto_update "yes"
mixer_type "software"
bind_to_address "localhost"
music_directory "/var/lib/mpd/music"

MPDを再起動します。
sudo service mpd restart
music_directory で指定したディレクトリにmp3の音楽ファイルを入れてください。
ここからはmpcの説明に入ります。 mpcというコマンドを使ってプレイリストを作ります。 プレイリストに載っている曲だけが再生可能になります。
mpc clear  #プレイリストを空にします。
mpc update #もし音楽ディレクトリを変更したり音楽ファイルを更新した場合、アップデートで更新します。
mpc ls|mpc add #音楽ファイルをプレイリストに追加します。
mpc playlist #プレイリストを表示します。
mpc play #音楽が再生されれば成功です。
これでサーバー側の設定が終わったので、次はクライアント側です。

スマホでMPDroidというアプリをインストールしてください。

Hostの設定でラズベリーパイのIPアドレスを指定したら完了です。192.168みたいなやつ。

スマホからコントロールしてラズベリーパイから曲が流れたら成功です。

↑このページのトップヘ