毎日暑いですね。
RPiを使って「ロボットにAIを」がテーマですから、ぼちぼちとAIネタを取り入れて、ロボットは実はPCに手足が生えたものだったのだと言いたいyukiです。
ブログのネタ計画をあれこれ2週間の間に練ってみました。
「ロボットのいるくらしを考える」という弊社のミッションから、「考えて」「提案して」「実現する」というところだとすると、やはり、何らかのインタラクションができるロボットになれるようなシステムがよいですし、アールティのお客様だと人型とかインタラクションの研究の方が多いので、そういった方面に役立つ内容になるように研究計画を立てたので、ブログに少しずつアップすることにします。
でも、RPiというおもちゃを手に入れたので、あれもしたい、これもしたい妄想だけが膨らみます。
あまりマニアックになりすぎないようにと先々週書いたのではありますが、RPiの文献やネットの記事(日本語)を読むにつけ、これ、素人さんには解説記事を理解するのがちょっと大変だわと悟りました。
つまり、Linuxがばっちりわかってるマニアしか使ってないだろうなって判断しました。
ほんとはRPiは小学校高学年以上で使えるようなコンセプトのはずなのに、なぜ日本語文献がこれほど難しい?
英語のほうがやさしい内容のがありますね。w
書籍もたくさん出ているので何冊か購入して、何冊か立ち読みしてますが、どれもマニアックすぎて、お勧めできないかんじでした。
書籍の著者は内容が相当むつかしいというのがわかって書いているのかな。と思えるくらいです。
とはいえ、何もないと大変なので、しいてあげるとするならば、下記の本がお勧め。
[amazonjs asin=”4899773528″ locale=”JP” title=”Raspberry Piで遊ぼう!”]
そして、ここで紹介していくのも、独断と偏見で、うちのショップのブログの読者なら、個人で使うことが多いだろうとおもうのでフリーのソフトウェアやフリーのツールを探しつつ、進めます。
RPiの初期化等の動かすための紹介記事は上記の本にもありますし、WEBにもあちこちにあるのでここでは割愛することにします。w
なので、申し訳ないですが、記事を読んでわかる人だけついてきてください。w
内容については、途中で何か血迷って迷走することもあると思うので、全貌はここでは明かさないけれど、Siriとまでは行かなくても、近い将来簡単なチャットくらいができることを夢見て、まずは、RPiにしゃべれるようにしてみましょう。w
作っていくうちに人工知能とは何ぞや?って思うところは多々出てくるかと思いますし、最初はそれほど人工知能な感じがしないとおもいます。
全体を後でまとめるために、C言語で書いていきます。
こちらの環境は、
RPi Type B
Logicoolのスピーカー
イヤホンジャックとスピーカーをつなぐケーブル
HDMIでモニターと接続
USBキーボードとUSBマウス
HDMIモニタ
というところです。
では、しゃべらせる準備をしていきましょう。
今回は、発話(人工知能用語では、しゃべることを「発話」といいます。)するものだけを作ります。
AIで、会話しているふうに見せるために重要だと思うのは、次のものだと思います。
1.会話の「間合い」
2.それっぽい回答(受け答え)
この二つは、認知心理学の方に答えが用意されていて、それらを実装するとそれっぽい感じになることが研究者には知られています。
とはいえ、まだまだ我々のRPiはそこまで行っていません。
RPiを起動された方は知っていると思いますが、RPiのハードウェアにはイヤホンジャックが装備されているので、そこにスピーカーをつなぐと言うことにして、まずはしゃべらせてみせましょう。
しゃべるためには音声合成という技術を使います。
人間のように、音声で対話をするシステムは、かなり古くから考えられてきた人工知能応用ですし、ロボットのインターフェイスとしてはとても自然なメディアだと思います。
自然言語による対話、とりわけ音声での対話のシステムは人工知能の技術で実現されてきてはいるものの、音声合成、音声認識、音響認識、どれをとっても難しい技術であることには違いありません。
それでも近年は、オープンソースがはやりなのと大学等で作られた音声合成や音声認識が使えます。
何かよいサンプルないかなと思って本を調べたら、「Raspberry Pi〔実用〕入門」のP.144にその紹介がありました。JTalkというのがRPiのRaspbianで使えるようです。
[amazonjs asin=”4774158550″ locale=”JP” title=”Raspberry Pi〔実用〕入門 ~手のひらサイズのARM/Linuxコンピュータを満喫! (Software Design plus)”]
私としては、他のソフトとの兼ね合いもあるので、C言語で書きたいのですが、紹介例は、ShellスクリプトとPythonでした。
この連載では、この先にC言語でこのサンプルを書き直してみることにします。
Open JTalkは、入力された日本語テキストに基づいて自由な音声を生成するHMMテキスト音声合成システムで、最大200字までの文章を合成できるとあります。
漢字が使えるみたいなので、これを採用してみましょう。
デモで話してる声を聞いてみましょう。(上記のページで音がでます。)
なかなかお声もよいし、発音もそこそこよろしいようです。
では、おもむろにjtalkをRPiにインストールしてみましょう。
Sourceforgeにあるようですが、Raspbian用の公式レポジトリでも公開されているようなので、apt-getでいけるそうです。
コマンドプロンプトで、下記を入力します。
$ sudo apt-get install open-jtalk hts-voice-nitech-jp-atr503-m001 open-jtalk-mecab-naist-jdic
インストールには、ネットの速度にもよると思いますが、スイカを一切れ食べるくらいは時間かかります。
ちなみにmeiはapt-getにはありませんでした。
あ、終わりました。
しゃべらせて見ましょう。
なんて書こうかな。
vi tts.txtと打ってから入力しようとして気づきました。
あれ?
むむ?
こいつ、デフォルトでは日本語できないのか!
外国生まれのRPiに日本語ないの当たり前ですね。何もインストールされてないRaspbian、日本語環境がないのでした。
日本語で話すためには、日本語入力が出来ないといけないじゃないか!
とここで衝撃を受けた私は早速日本語環境を入れてみます。
Linuxで日本語を使うためには、次の3つが最低限必要です。
日本語入力システム
日本語フォント
日本語対応ターミナル
RPiで日本語を使うためには、X Windowを使うならLocaleの設定だけで済むようですが、今回はコンソールがメインですので、上記を入れようと思います。Localeの設定もraspi-configを使って日本語にしておいてくださいね。
インストール途中でディスクをこれだけ使うけどいいか?みたいなことをいろいろ聞かれたり、404 not foundが出ますが、気にしないで進んでよいです。
(”Raspberry Pi で遊ぼう”に書いてある日本語化の方法が一番わかりやすいと思います。)
というわけで、日本語環境ができました。
コンソールで日本語ターミナルを起動するのをわすれずに。でないと日本語表示されません。
$ jfbterm
いよいよ、何かしゃべらせます。
$ vi tts.txt
Viは、エディタです。 tts.txtはファイル名です。
英語では、音声合成は、Text To Speechというので、TTSと省略されます。
そして、ここはやはり、下記を言わせましょう!
Hello world!
ではなくて、
Hello Real worldですよね。
Viはコマンド式エディタですので、iをまず押してください。これで入力モードになります。
そして、日本語を起動し、下記を記入します。
ハロー、リアルワールド!
そして、Escキーを押し、viのコマンドモードに戻ります。
日本語モードも終わらせてください。
ファイルをセーブしますので、wコマンドとエディタを終わらせるコマンドqを同時に入力してエディタを終わります。
下記のように打ってください。
:wq
これでtts.txtが出来たはずです。
では、実際に、このテキストをしゃべらせてみましょう。
「Raspberry Pi実用入門」のP.144にその紹介がありますので、これを参考に、シェルを書きます。
元ねたはこちらのようなので、紹介させていただきます。
ちなみに、このシェルスクリプトは、
音声合成をして、
wavファイルを作り
aplayというwavファイルを再生するシステムツールを呼び出し音声を出力
wavを消去
という内容になっています。
$ ./ojt.sh tts.txt
あれ?しゃべらない。おかしいな...
あ、そうか。
こちらではモニターに出力するためにHDMIにつないでるんだった。
RPiはHDMIが出力と思っている?もしかして?ということで、明示的にスピーカーをセット。
$ sudo amixer cset numid=3 1
気を取り直して入力。
$ ./ojt.sh tts.txt
どうですか?しゃべりましたか?
ダウンロードしたのがm001だったので、ちょっと野太い声でしたが、しゃべりました!
次回は、これをC言語化してみましょう。
毎日暑いですね。
RPiを使って「ロボットにAIを」がテーマですから、ぼちぼちとAIネタを取り入れて、ロボットは実はPCに手足が生えたものだったのだと言いたいyukiです。
ブログのネタ計画をあれこれ2週間の間に練ってみました。
「ロボットのいるくらしを考える」という弊社のミッションから、「考えて」「提案して」「実現する」というところだとすると、やはり、何らかのインタラクションができるロボットになれるようなシステムがよいですし、アールティのお客様だと人型とかインタラクションの研究の方が多いので、そういった方面に役立つ内容になるように研究計画を立てたので、ブログに少しずつアップすることにします。
でも、RPiというおもちゃを手に入れたので、あれもしたい、これもしたい妄想だけが膨らみます。
あまりマニアックになりすぎないようにと先々週書いたのではありますが、RPiの文献やネットの記事(日本語)を読むにつけ、これ、素人さんには解説記事を理解するのがちょっと大変だわと悟りました。
つまり、Linuxがばっちりわかってるマニアしか使ってないだろうなって判断しました。
ほんとはRPiは小学校高学年以上で使えるようなコンセプトのはずなのに、なぜ日本語文献がこれほど難しい?
英語のほうがやさしい内容のがありますね。w
書籍もたくさん出ているので何冊か購入して、何冊か立ち読みしてますが、どれもマニアックすぎて、お勧めできないかんじでした。
書籍の著者は内容が相当むつかしいというのがわかって書いているのかな。と思えるくらいです。
とはいえ、何もないと大変なので、しいてあげるとするならば、下記の本がお勧め。
[amazonjs asin=”4899773528″ locale=”JP” title=”Raspberry Piで遊ぼう!”]
そして、ここで紹介していくのも、独断と偏見で、うちのショップのブログの読者なら、個人で使うことが多いだろうとおもうのでフリーのソフトウェアやフリーのツールを探しつつ、進めます。
RPiの初期化等の動かすための紹介記事は上記の本にもありますし、WEBにもあちこちにあるのでここでは割愛することにします。w
なので、申し訳ないですが、記事を読んでわかる人だけついてきてください。w
内容については、途中で何か血迷って迷走することもあると思うので、全貌はここでは明かさないけれど、Siriとまでは行かなくても、近い将来簡単なチャットくらいができることを夢見て、まずは、RPiにしゃべれるようにしてみましょう。w
作っていくうちに人工知能とは何ぞや?って思うところは多々出てくるかと思いますし、最初はそれほど人工知能な感じがしないとおもいます。
全体を後でまとめるために、C言語で書いていきます。
こちらの環境は、
RPi Type B
Logicoolのスピーカー
イヤホンジャックとスピーカーをつなぐケーブル
HDMIでモニターと接続
USBキーボードとUSBマウス
HDMIモニタ
というところです。
では、しゃべらせる準備をしていきましょう。
今回は、発話(人工知能用語では、しゃべることを「発話」といいます。)するものだけを作ります。
AIで、会話しているふうに見せるために重要だと思うのは、次のものだと思います。
1.会話の「間合い」
2.それっぽい回答(受け答え)
この二つは、認知心理学の方に答えが用意されていて、それらを実装するとそれっぽい感じになることが研究者には知られています。
とはいえ、まだまだ我々のRPiはそこまで行っていません。
RPiを起動された方は知っていると思いますが、RPiのハードウェアにはイヤホンジャックが装備されているので、そこにスピーカーをつなぐと言うことにして、まずはしゃべらせてみせましょう。
しゃべるためには音声合成という技術を使います。
人間のように、音声で対話をするシステムは、かなり古くから考えられてきた人工知能応用ですし、ロボットのインターフェイスとしてはとても自然なメディアだと思います。
自然言語による対話、とりわけ音声での対話のシステムは人工知能の技術で実現されてきてはいるものの、音声合成、音声認識、音響認識、どれをとっても難しい技術であることには違いありません。
それでも近年は、オープンソースがはやりなのと大学等で作られた音声合成や音声認識が使えます。
何かよいサンプルないかなと思って本を調べたら、「Raspberry Pi〔実用〕入門」のP.144にその紹介がありました。JTalkというのがRPiのRaspbianで使えるようです。
[amazonjs asin=”4774158550″ locale=”JP” title=”Raspberry Pi〔実用〕入門 ~手のひらサイズのARM/Linuxコンピュータを満喫! (Software Design plus)”]
私としては、他のソフトとの兼ね合いもあるので、C言語で書きたいのですが、紹介例は、ShellスクリプトとPythonでした。
この連載では、この先にC言語でこのサンプルを書き直してみることにします。
Open JTalkは、入力された日本語テキストに基づいて自由な音声を生成するHMMテキスト音声合成システムで、最大200字までの文章を合成できるとあります。
漢字が使えるみたいなので、これを採用してみましょう。
デモで話してる声を聞いてみましょう。(上記のページで音がでます。)
なかなかお声もよいし、発音もそこそこよろしいようです。
では、おもむろにjtalkをRPiにインストールしてみましょう。
Sourceforgeにあるようですが、Raspbian用の公式レポジトリでも公開されているようなので、apt-getでいけるそうです。
コマンドプロンプトで、下記を入力します。
$ sudo apt-get install open-jtalk hts-voice-nitech-jp-atr503-m001 open-jtalk-mecab-naist-jdic
インストールには、ネットの速度にもよると思いますが、スイカを一切れ食べるくらいは時間かかります。
ちなみにmeiはapt-getにはありませんでした。
あ、終わりました。
しゃべらせて見ましょう。
なんて書こうかな。
vi tts.txtと打ってから入力しようとして気づきました。
あれ?
むむ?
こいつ、デフォルトでは日本語できないのか!
外国生まれのRPiに日本語ないの当たり前ですね。何もインストールされてないRaspbian、日本語環境がないのでした。
日本語で話すためには、日本語入力が出来ないといけないじゃないか!
とここで衝撃を受けた私は早速日本語環境を入れてみます。
Linuxで日本語を使うためには、次の3つが最低限必要です。
日本語入力システム
日本語フォント
日本語対応ターミナル
RPiで日本語を使うためには、X Windowを使うならLocaleの設定だけで済むようですが、今回はコンソールがメインですので、上記を入れようと思います。Localeの設定もraspi-configを使って日本語にしておいてくださいね。
インストール途中でディスクをこれだけ使うけどいいか?みたいなことをいろいろ聞かれたり、404 not foundが出ますが、気にしないで進んでよいです。
(”Raspberry Pi で遊ぼう”に書いてある日本語化の方法が一番わかりやすいと思います。)
というわけで、日本語環境ができました。
コンソールで日本語ターミナルを起動するのをわすれずに。でないと日本語表示されません。
$ jfbterm
いよいよ、何かしゃべらせます。
$ vi tts.txt
Viは、エディタです。 tts.txtはファイル名です。
英語では、音声合成は、Text To Speechというので、TTSと省略されます。
そして、ここはやはり、下記を言わせましょう!
Hello world!
ではなくて、
Hello Real worldですよね。
Viはコマンド式エディタですので、iをまず押してください。これで入力モードになります。
そして、日本語を起動し、下記を記入します。
ハロー、リアルワールド!
そして、Escキーを押し、viのコマンドモードに戻ります。
日本語モードも終わらせてください。
ファイルをセーブしますので、wコマンドとエディタを終わらせるコマンドqを同時に入力してエディタを終わります。
下記のように打ってください。
:wq
これでtts.txtが出来たはずです。
では、実際に、このテキストをしゃべらせてみましょう。
「Raspberry Pi実用入門」のP.144にその紹介がありますので、これを参考に、シェルを書きます。
元ねたはこちらのようなので、紹介させていただきます。
ちなみに、このシェルスクリプトは、
音声合成をして、
wavファイルを作り
aplayというwavファイルを再生するシステムツールを呼び出し音声を出力
wavを消去
という内容になっています。
$ ./ojt.sh tts.txt
あれ?しゃべらない。おかしいな...
あ、そうか。
こちらではモニターに出力するためにHDMIにつないでるんだった。
RPiはHDMIが出力と思っている?もしかして?ということで、明示的にスピーカーをセット。
$ sudo amixser cset numid=3 1
気を取り直して入力。
$ ./ojt.sh tts.txt
どうですか?しゃべりましたか?
ダウンロードしたのがm001だったので、ちょっと野太い声でしたが、しゃべりました!
次回は、これをC言語化してみましょう。