外部からの音声認識について

3,713 views
Skip to first unread message

アザラシ

unread,
May 28, 2012, 9:04:49 PM5/28/12
to Android-SDK-Japan
はじめまして、参加させていただきました専門学生のプログラマです。

最近、Androidの方の音声認識を使おうと思い、マイクから取得したデータをリアルタイムで処理して音波形を作ろうと考えています。

ですが、音声認識をするRecognitionListenerやSpeechRecognizerを見た所、認識した声から発音した言葉の文字列を取
得する事は出来ても、入力した声の音量をとる事が出来ず、音波形に必要な振幅を取る事が出来ません。

音声入力をする際に出るマイクのダイアログに一瞬音声の音波形が出ると思うので何かしらの方法はあると思っているのですが、ネットを調べても入力した音
声を識別しての文字列しか見つかりませんでした。

どうしたら出来るのか、それとも今の所実現不可能なのか……

どうかよろしくお願いします。

Keiji Ariyama

unread,
May 30, 2012, 2:44:01 AM5/30/12
to android-...@googlegroups.com
有山と申します。


 AudioRecord(readメソッド)を使えばRaw形式で音声データを取得できるようで
すが、これはアザラシさんの期待する内容ではありませんか?

AudioRecord
http://developer.android.com/reference/android/media/AudioRecord.html
--
Keiji,
ml_an...@c-lis.co.jp

アザラシ

unread,
May 30, 2012, 4:55:52 AM5/30/12
to Android-SDK-Japan
有山さん、返答ありがとうございます。

AudioRecordではどうかという事でしたが、マイクで入力したデータを保存して読み込むという流れで音波形を作る、
という事は出来ると思うのですが、不安な点がいくつかありました。

まずは、処理速度です。ゲームのシステムに音声入力を使いたいと思い、音波形にしたいと思っていたので、
ゲームの起動中にリアルタイムで認識したいのです。

例えば、あいうえお、と声を入れたとして、「あ」と「え」だけが声がでかかったとします。
声量で音波形を作ったとすると波状の音波形が作れる。

と考えました。

そうすると、あいうえおのデータをデータとして保存してから処理をするのでは処理時間に誤差が出来たりするのではないか、という事が不安です。

更に、「リアルタイム」という部分も不安でした。

保存するとなると保存したい分までいってから保存し、処理をするという流れになると思うのですが、そうなると「あいうえお」と言った後にあいうえおの音
波形が出来、それを作っている間は認識しないという状況が出来るのではないか、という事になり、リアルタイムにはならないのではないか?という事で
す。

発音した単語の声量をとる、というのが理想形です。

もし、それが無理だとするなら保存する方法をとりたいと考えています。
処理の流れはここを参照しようと思っていますが、この方法をとるとAndroid2.3以上じゃないと無理みたいなので流通させるという点では不安で
す。

http://techbooster.jpn.org/andriod/multimedia/2891/


> 有山と申します。
>
>  AudioRecord(readメソッド)を使えばRaw形式で音声データを取得できるようで
> すが、これはアザラシさんの期待する内容ではありませんか?
>
> AudioRecordhttp://developer.android.com/reference/android/media/AudioRecord.html

Keiji Ariyama

unread,
May 30, 2012, 6:22:05 AM5/30/12
to android-...@googlegroups.com
有山です。

 AudioRecordのreadメソッドは引数の配列等に音声データを格納するので、保
存しないでの解析は可能だと認識しているのですが、、、僕の理解が間違ってい
たら、どなたか突っ込みお願いします。

>> もし、それが無理だとするなら保存する方法をとりたいと考えています。
>> 処理の流れはここを参照しようと思っていますが、この方法をとるとAndroid2.3以上じゃないと無理みたいなので流通させるという点では不安で
>> す。
>>
>> http://techbooster.jpn.org/andriod/multimedia/2891/

 不安な点はいくつもあるかとは思いますが、それらはおそらくトレードオフの
関係にあります。全てを満たす解答を提示するのは、今回の場合、非常に難しい
と思います。

 それぞれの手段のメリット・デメリットを照らし合わせて、必要であれば実際
にコードを書いて計測して、最終的に一番妥当と思える手段を選択するのがいい
んじゃないでしょうか。
--
Keiji,
ml_an...@c-lis.co.jp

egg

unread,
May 30, 2012, 6:44:52 AM5/30/12
to android-...@googlegroups.com
江川です。

>  AudioRecordのreadメソッドは引数の配列等に音声データを格納するので、保
> 存しないでの解析は可能だと認識しているのですが、、、僕の理解が間違ってい
> たら、どなたか突っ込みお願いします。

可能です。

アザラシさん
android.speechパッケージのものは、音声をクラウドへ投げ、言葉として認識させた結果を文字列として受け取るものです。
有山さんがおっしゃる通り、android.media.AudioRecordを使うと、マイクなどから入力される音の波形を、任意の
(デバイスが対応している必要があります)サンプリング周波数で取得できます。

オライリーさんの以下の書籍に振幅(音量)に応じてWhoop君が爆発するWhoopというサンプルアプリがあります。
http://www.oreilly.co.jp/books/9784873114866/
(URLの「関連ファイル」リンクよりダウンロードし、appD/sources/Whoop)
今回の要件にどれほど合致するかはわかりませんが、AudioRecordを使って波形を評価している例にはなると思います。
もしよろしければ御覧になってみて下さい。

------------------------------------------
EGAWA Takashi


2012年5月30日 19:22 Keiji Ariyama <ml_an...@c-lis.co.jp>:
> --
> このメールは Google グループのグループ「Android-SDK-Japan」の登録者に送られています。
> このグループに投稿するには、android-...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-sdk-ja...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-sdk-japan?hl=ja からこのグループにアクセスしてください。
>

アザラシ

unread,
May 30, 2012, 11:30:36 AM5/30/12
to Android-SDK-Japan
お二人とも返答ありがとうございます。

AudioRecordというもので音声入力を出来るんですね。

音声入力は音声認識のものでしか出来ないとばかり思ってました。

触った事がないものなのでサンプル等で検証後、報告します。

ありがとうございました。

Masakazu Nakano

unread,
May 30, 2012, 1:11:58 PM5/30/12
to android-...@googlegroups.com

なかのです

dspmanager というアプリがありますね。細かくみていませんが、
音声出力に対してなんらかのソフト的なRTなイコライザ加工ができるようです。
ソースがgooglecodeに上がってたように思います。

経験則からすると、Windows(AC97)でいうステレオミキサーに相当する機能が
Androidには無いようで、
H/W的に経路を繋ぐ方法は、おそらくないのではないかと思われます。

# そもそもAndroidのサウンド仕様にH/Wイコライザ入ってないし…確か

とした場合、音声ストリームのバッファリングによる加工
という江川さんご指摘の手段が賢明なように思われます。

本当はこれがH/W的にできると、通話中の音声を
高齢者や聴覚障害者向け等で周波数特性変えたりできるんですけどね。

RT処理でFFTしている例だと、
tricorderというスタートレックのセンサー模倣アプリが割りと波形出してて遊
べます。

ゲームで使えるかはちょっと微妙なところですね…

例えばPCでも昔からよくあるのが拍手やフィンガースナップの高音域を判別して、
音声認識等のトリガーに使うネタソフトですが、これができるか?はちょっと微
妙です。

8KHzくらいのレートまで落としてデータ量軽減して力技で分解・解析
で、どこまでできるか? って辺りになりそうです。

もしかしたら、hdmi側に音声回せる端末には、何らかの裏技があるかもしれません。

なかの
--
なかの
http://andnow.co はじめました

Reply all
Reply to author
Forward
0 new messages