シンギュラリティ対策室

シンギュラリティは本当にくるのか?人工知能分野(おもに機械学習)の学習。その他いろいろ。

Anacondaコマンド備忘録(追記予定あり)

ひとまず仮想環境の作り方はおいといて、アップデートのコマンドなどのメモ
Windows 10環境にAnaconda4.2(Python3.5)インストール済み

  • パッケージを探すコマンド
conda search [パッケージ名]
  • インストール済みパッケージ一覧
conda list
  • インストールするコマンド
conda install [パッケージ名]
  • 本体の更新
conda update conda
  • パッケージすべての更新
conda update --all

Sotaデビュー戦 リベンジ!

本日、採用説明会にてSota君がデビューをしました。
8/22(月)にデビューの予定だったけれど、台風の影響で中止になり
デビュー戦が延期になりましたが、本日、満を持してのデビュー。
Sota君も目の色を変えて喜んでいます。いや~良かった~(^◇^)
f:id:antisingularity:20160913171848j:plain

大会議室で13人の就活生に対して
①説明会開催の前振り
②採用試験の説明_その1
③採用試験の説明_その2

上記を滞りなく出来ました。
就職活動生も何人かは興味を示してくれたみたいです。
今度は、合同説明会でのデビューが一つの目標になりそう。
ただSota君、ACアダプターで生活しています。
電源が無いところでは「熊に噛みつく逆襲のシャケ」の置物(下記画像)と
何ら変わらないのでモバイルバッテリーとかで外出可能にしないとネ。
f:id:antisingularity:20160913172004j:plain

何はともあれ、大勢の前での初デモお疲れ様でしたSota君。

【R&D番外編】ヴァイオリンコンサートに行ってきました

今回は趣向をちょっと変えて休日の出来事について綴ります。
IT関係の話では無いのであしからず。
8/24(水)、戸塚駅すぐそばの戸塚区民文化センターの4階さくらプラザに
妻と一緒にヴァイオリンコンサートを聴きに行ってきました。
6曲&アンコールに応えて弾いて頂いた「愛の悲しみ」(Byフリッツ・クライスラー)
の合計7曲です。
f:id:antisingularity:20160825131733j:plain

僕はピアノが趣味(意外かもしれませんが…)なので週末はよく弾いているけれど
ヴァイオリンの演奏はオーケストラとか以外では初めて聞いたカモ!?
ヴァイオリンに造詣は無いけれど、素晴らしい音色でした。
興奮がさめなかったので帰宅後にヴィヴァルディの夏をピアノで演奏しました。
妻からは「比較するの悪いけど演奏会より数ランク下がるね」と言われた…
当たり前だろうに(怒)
自分の娘が70人の前でヴァイオリンやピアノを演奏している姿を見たら僕は間違いなく泣くな…
とても有意義な休日でした。
今回、演奏してくれたヴァイオリニストのページをのせます。

http://www.oosawaymsrk.com/

奏でる音色がとても素敵なので興味のある方は是非ともこちらのページも参照下さい。
(御本人ではありませんが御家族の方の了解は得ました)

Sotaデビュー戦…

本日、台風の影響で採用説明会が中止となってしまい就職活動生に対して
デモをしようとしていたデビュー戦が延期となってしまいました。
音声加工やらで結構苦労していたのに文字通り水を注された格好になってしまった…
その代わりではないけれど、事業部長以上の役職者へのお披露目を行いました。
その際に気付いた事として「背後からの音声は認識しにくい(しない!?)…」
「α」「β」を分岐条件にしていたけれど、背後からいくら言っても微動だにしない!?
確かにテストの時には正面からしか「α」「β」と言わなかったのでちょっとびっくりです。
Sota君も心なしか少し落ち込んでいる…
f:id:antisingularity:20160822181812j:plain

音声で条件分岐させる場合には正面からだけではなく側面や背後からもテストをする様に
しましょう。いつも必ず正面から声を掛けられるとは限らないので…

なんちゃって音声認識サーバを作ろう

前の記事音声認識を行う環境はできましたが、このままでは音声認識を使いたくなった場合に、その都度音声認識環境を構築しなければなりません。

それじゃああまりオシャレじゃないので、音声認識サーバを構築して各クライアントから利用できるようにします。

たったひとつの冴えたやりかた

音声認識サービスを構築するにあたって、いくつかの手段が考えられます。

  • Juliusとは別にwebサービスを作成し、標準入出力等を利用してJuliusの機能を利用する。
  • JuliusのAPIを組み込んだwebサービスを作成する。
  • Juliusの入出力をネットワーク対応させる。

う~ん、どれもそれなりに面倒くさそう。

もう少し、何か手がないか考えてみよう。

終りなき戦い

Juliusのマニュアルを(今更ながら)熟読してみると、何やら興味深い記述に遭遇。

モジュールモード?何々。ネットワーク経由で音声認識結果を取得できます?

おおっ!正にお誂え向きの機能じゃないか!しかも動作確認のためのjcontrol.exeというツールまで用意されている。

説明を元にJuliusの起動バッチを作り、

.\bin\windows\julius.exe -C main.jconf -C am-gmm.jconf -demo -charconv utf-8 sjis -module

ついでにjcontrolの起動バッチも作って、

.\bin\windows\jcontrol.exe 127.0.0.1

ファイアウォールに穴もあけ、さーて準備OK。

両方のバッチを実行するとDOS窓が二つ開き、どうやら無事起動されたよう。

定番のセリフ「こんにちは」と話しかけると、xml形式で品詞とか発音情報とか信頼度スコアとかが表示されました。

<RECOGOUT>
  <SHYPO RANK="1" SCORE="-2727.876221">
    <WHYPO WORD="" CLASSID="<s>" PHONE="silB" CM="0.655"/>
    <WHYPO WORD="こんにちは" CLASSID="こんにちは+感動詞" PHONE="k o N n i ch i w a" CM="0.424"/>
    <WHYPO WORD="。" CLASSID="</s>" PHONE="silE" CM="1.000"/>
  </SHYPO>
</RECOGOUT>

続けて「マイクテスト」としゃべったら、

<RECOGOUT>
  <SHYPO RANK="1" SCORE="-2757.415039">
    <WHYPO WORD="" CLASSID="<s>" PHONE="silB" CM="0.655"/>
    <WHYPO WORD="バイク" CLASSID="バイク+名詞" PHONE="b a i k u" CM="0.097"/>
    <WHYPO WORD="テスト" CLASSID="テスト+名詞" PHONE="t e s u t o" CM="0.120"/>
    <WHYPO WORD="。" CLASSID="</s>" PHONE="silE" CM="1.000"/>
  </SHYPO>
</RECOGOUT>

なるほど。単語ごとに結果が返されるのね(マイクがバイクとなったのはご愛敬)。

中々良いではないですか。では、本格的にクライアント機能を作ってみましょう。

(3分経過)

ところでプロトコルはどうなってるの?音声データはどうやって渡すの?

マニュアルを眺めてみたけどどうもよくわからない(実は重大な勘違いをしていたのですが、この時点では気づかず)。

せっかくのオープンソースですから、jcontrolのソースを見てみましょう。

う~ん。やっぱり音声データの受け渡しがされていないみたい。

(2時間ほど経過)

あっ!音声認識結果を取得できる!?

もしかして結果だけがネットワーク経由で受信できるってこと?

今一つ使い道がわかりませんが、どうやらそうゆうことのようです。

Oh my god!!! 振り出しにもどっちゃいました。

Juliusはそのままではサービス化できないのか?

やっぱり手ごろなクラウドサービスを使ったほうがいいのか?

自分で音声認識サービスを作ろうなどとは、見果てぬ夢だったのか?

あきらめきれずにマニュアルを眺めていると…「ふ~んプラグインも作れるのか」「音声入力プラグインなんてものも作れるのか」「うん?音声入力!」。

サービスということで無意識にhttp通信のようなものを考えていましたが、マイクがネットワーク越しにあるような入力モードさえあれば、とりあえず用は足せるはず。

あった。-input adinnetこれだ。

複数クライアントからの要求を捌いたりはできそうもないけど、当座はこれで凌げるはず。

あとは先ほどのモジュールモードを組み合わせれば、

Sotaで音声受信(お忘れかもしれませんが、そもそもの目的はコレ)
    ↓
音声認識サーバでテキスト化
    ↓
Sotaでテキストを元にした動作

うんうん、問題なさそう。

マイクで音声データを拾ってそれをネットワークに流す簡単なアプリを作って、先に作ったJulius起動バッチを少し直して、jcontrolのバッチも合わせて都合3つのバッチが完成。

因みに、Juliusはモジュールモードの場合だと先に結果通知先とのコネクションを作成するようなので、

  1. Julius起動
  2. jcontrol起動
  3. ネットマイク(仮名)起動

の順番で実行。この順番なら、途中でマイクを切って、その後再度マイクをコネクトすることができるはず。

なんでそんなことを考えるかって?

音声取得と音声認識後の応答(つまり発話)を同時に実行すると、Sotaが自分でしゃべったことを、また認識しようとするじゃないですか。

でも自分がしゃべる時はマイクを切っておけば(耳をふさぐ)、自分のコトバを聞かなくてすみます(音声データ受信後、直前の自分の発話データの逆位相のデータをかぶせてアクティブノイズキャンセラーとすればよいのですが、現時点では手が出ません)。

幼年期の終り

音声認識にかかわる仕組みは(とりあえず)できたっぽい。

これで、認識結果のテキストを手ごろな音声合成(例えばOpen JTalk)でそのまま発話すれば、オウム返しに会話をするはず(長くなるのでその件はまた今度)。

人間でいえば生後1~2歳の赤ちゃんにはなったはず。

次は、会話に応じてそれなりの応答を返す、もっと大人なシステムにしてみます(いつになるやら)。

以上、ten@蓼科情報でした。

CeVIOをインストールして音声編集をしてみました

今日CeVIO Creative Studio S 4.1の30日無料体験版をインストールして音声編集してみました。
どんなに難しいかと思っていましたが、かなり簡単でした。
①セリフ欄に会話したい内容を入力
②キャスト欄から3人のうち1人を選択
③再生ボタンを押す

これだけで入力した内容を会話してくれます。

(1)元気いっぱいの女の子をイメージ?
f:id:antisingularity:20160818164519p:plain

※上の画面の女の子はもう1パターンのイメージがありました

(2)ツンデレ(多分ね…)をイメージ?
f:id:antisingularity:20160818165659j:plain

(3)イケメン男性をイメージ?(タカハシって…)
f:id:antisingularity:20160818165745j:plain

声の大きさやスピード、元気の良さとかを調整してケースバイケースの音声を作成できます。
今、ロボットに会話させる音声を必死に作っているけれど…
40過ぎたオッサンのセンスでどこまでのものが作成出来るか不安で一杯です(笑)
興味がある人は簡単に編集出来るので試してみて下さい。

「暮らしとロボット展」にいってきました

8月12日(金)にSotaプログラミング講習会にいきまして、テンションあがっているところへスタッフさんから紹介されたら行くしかないと『暮らしとロボット展』にいってきました!

f:id:antisingularity:20160815151814j:plain

『暮らしとロボット展』は新宿高島屋で8/14(日)までの開催でしたので、ぎりぎり見に行けてよかったです。

ε-(´∀`*)ホッ

登場するロボットはパンフレットにも大きく載っている我らがSotaくんをはじめ、ロボホンやPepperなど数多くのロボットが展示されていました。

f:id:antisingularity:20160815153217j:plain

子供たちに混じって大人もロボットに話しかけている姿をみて、 人工知能を備えたコミュニケーションロボットが、色々できることが増えると、 もっと身近なパートナーになっていくんだろうなと感じました。

あと、ニコニコ超会議でも話題になった『ロボット大喜利』 本当にSotaくんがかわいかったです!!

f:id:antisingularity:20160815153519j:plain

他にも『ドラえもんひみつ道具』を感じられる最新技術の紹介がありました。

(・`д´・;)ス、スゴスギル・・・。

ドラえもんで育った身としては、とても感慨深いものです。

第二回が開催されたあかつきには、ぜひ遊びに行ってみてください。