Category Archives: 音声合成

WASAPIを使った音声処理

ちょっとしたきっかけでWASAPIを理解する機会があったのでちょっと書いてみます。

WASAPIといえば、WindowsVistaから実装されたオーディオAPIですが、ハードウェア依存がなく結構使いやすくなっています。今回試したのは、入力デバイスから入力された音声データと、現在OSが再生している出力バッファ領域に容易にアクセスできるということです。

仕組みを簡単に言ってしまえば、OSが音声が再生するタイミングで、再生バッファサイズ(サンプリングレート、ビット長によって変わります)の値が0から実サイズになり、先頭アドレスがGetBufferで返されます。GetBufferには再生フラグが設定されており、再生バッファのデータ値がすべて0の時(無音時)にはサイレントフラグもセットされるようになっています。

データ型はごく一般的なPCMデータでWAVEファイルのデータと同じです。(ただオーディオドライバではサンプリングデータ長を16BItと24Bitの設定ができるのだが、データは常に16Bitになっているのが今だ疑問である。)

AudioSample

データの処理としては、再生も録音も同じ仕組みになっているようで、録音デバイスと再生デバイスの違いだけで処理は共通にすることができます。

WASAPIについては、WinRTでも使えるので覚えておいて損はないと思います。DirectX(Direct3D, Direct2D)とWASAPIで結構なものが作れますね。

Win32でDirect2DとWindows Animationは大体使ったので、WASAPIが制覇できればゲーム系のSDKが作れるなぁ。さてそろそろか。

 

HTML5やphpを始めてみる。AIはクライアントにあるべき。

さて、最近インターネットにも飽きてきた今日この頃(youtuberがらみの記事とか)ですが、こんなことではいけないと思い、phpやmySQLを使ってHTML5がらみのサイトを作り始めました。まだ公開できるものではありませんがライブラリ的なテンプレートはできてきました。メンバーログインや、DBの管理(辞書やBBS、蓄積型のデータ管理等)がウェブからできるようになりそうです。

たぶん、現時点での最有力なAI(?)のSiriさんもこんなPHPの返りから返答パターンを繰り返しているのかと思いながらふと思ったことがあり。。。AIってクライアント一台一台が持つべき頭脳ではないのかと。サーバー上でデータを解析してサーバーのデータだけが太っていったのではいつまでもパソコンは、パーソナルにはなり得ない。

個人的に調べたいことだって、どうしてサーバーに一度送られ、サーバーから答えが返ってくるのか。クライアントが自分でサーチしてベストな結果を探してくるべきではないかと思ったわけです。個人情報をやたら入力しろというクラウドサービス。個人情報を提供しているにもかかわらず便利になってない、パソコン事情。そこがおかしいと言いたい。

で、なにをするべきかと考えたわけですが、やるべき操作のマクロをプラグイン化できるクライアントソフト。どんどん機能をプラグインとして追加(課金でもいい)していく。例えば、ショッピングサイトから最安値を見つけるプラグイン。ソフト本体は、TTSなり、UIなりで自由に。TTSもプラグインかな。

こんなソフトがあったら、みんなのパソコン便利になるぞ〜。Windows Store Appでやってみるか。

かんたん!AITalk2PLUSの評価 ~ その3

先日、Wavファイルで音声をセーブしておいて所定のイベントで再生させるということを書きましたが、Wavファイルの再生ができるのであれば、50音をメモリ上の波形データを切り貼りさせれば言葉の発音ができるのではと初期のコンセプトに戻ってきました。(処理的にはWavファイルのヘッダーから音声の設定、サンプリングレートや、ステレオ、波形データのサイズ等を読み込んでデータをWASAPIに流し込んでいくだけ)次回はWASAPI関係のラッパーを作っていくことにしよう。

イントネーションや速度、高さなど人間的な表現にはかなりの調整が必要になると思うけど、機械的な声を作ったり、実際に話している人のボイスチェンジャー的なソフトも作ってみたいしね。

前にも書いたかもしれないが、現行のスピーチプラットフォーム(Ver.11)はWindows8になって漢字の読み(IMEが悪いのか、OSの漢字の読みが悪いのかは不明だが、確実にWindows7の時の漢字の読みよりも悪くなっている)がだめなので独自に読み方辞書みたいのを作るか、どこかのDBから漢字の読みを取ってきて再生させるかしかない。KINNECTでは本当に使えているのだろうか。内部は全部平仮名だったら笑うけど。w

AITalk

ブログの投稿前にとりあえず読み返しさせているところ。結構長い文章でも問題なく読んでくれています。ブログもテキストじゃなく、Wavファイルで投稿しちゃうか・・・自分の声とかでは素人過ぎて使い物にならないので。この声と会話ができるようになるのでしょうか。アイアンマンの映画を見て、また考える。

かんたん!AITalk2PLUSの評価 ~ その2

さて先日購入したAITalk2ですが、今の試用感を書く事にします。

テキストのマニュアルコピーは普通に使えますが、キーボードショートカットが使えません。しかもタブキーでボタン間のフォーカス移動ができず、ペーストしたあとマウスを使わないと読み上げボタンが押せません。せめてメニューに読み上げ項目をつけてほしかった。(わざとフォーカスやショートカットを使えなくしている感あり。あくまでも個人使用という事でキーボードマクロでも自動操作はできなさそう)

もう一つはwavファイルでの保存が出来るので、アプリによっては何かのイベントでwavファイルの再生が設定出来るようになっているので、あらかじめ完了メッセージをwavファイルにしておいて再生させるのに便利です。今の使用例としては株や、FXの取引で約定したら”約定しました”として再生させています。VisualStudioでもコンパイル成功時のコマンドからwavファイルの再生できるアプリがあれば何か言わせる事も出来そう。

今後はWASAPIを使って簡単にwavファイルを再生させるソフト作って、OSのイベントやカスタムイベントの受信時にWindowsメッセージに対応した声を再生させるようなアプリも作れそう。wav再生をメインとするHiddenのアプリとメッセージ送信コマンドでいろいろ使えそう。カーナビとかもその部類だろうけど、もうちょっとパソコンアシストに特化したものにしたい。

かんたん!AITalk2PLUSの評価 ~ その1

とりあえず、有料版で試してみました。ペガシスのエンコーダを持っているので優待価格で税込7714円。EXとかもっとほかの声で拡張版が売られているけど今回は基本的な機能とソフトのUIとかの検証をしたかったのでこれで十分。

第一印象、UIは.NET3.5らしい。以前は.NET2.0だったようだが、2013年のアップデートでアップグレードされている。たぶんWPFとかの互換性なのかもしれない。最近Windows8が出てから起動しないバグフィックスがあったらしいけど、基本変わりはないだろう。

機能的にはWindowsFormで作られているようだ。Win32のメッセージが使えないのはがっかりである。棒読みちゃんのプラグインはクリップボードをキーボードショートカットで張り付けているようだけど、実装方法としてはきれいじゃないけどしょうがない。(必要になったら、同じ方法でやるかもしれないしね)

コマンドプロンプトからテキストを受け付けてくれると楽なんだけど、一つexeを作って如何にか送り込むしかないかな。あとはSDKを買うか。(いくらなんだろう。一応リンクはここ→http://www.ai-j.jp/sdk2

一応、VisualStudio2010から.NETプロジェクトを作って、オブジェクトブラウザでAPIを見てみるも、SDKとしてはプロテクトがかかっているようだ。SDKの製品には別のDLLで提供されるらしい。後日入力版評価もやります。(ATOK+ドラゴンスピーチ)

詳細は今後も調査していきます。

参考になったページリンク

http://www.arcenserv.info/archives/5147/