まどかの | 自 | 己 | 満 | 足 | 日記 |
0709 |
2003/09/21(日)■ | |
やりたいこと考え過ぎて眠れません(- -; | ||
えー、今日は夜の8時の新幹線に乗って某歌番組収録のため東京に向かうのですが、午前中はのんびり寝て、昼から先輩からメールで来てた資料を印刷するためにいったん会社に行き、また家に帰って夕飯を取り駅に向かいました。 今回も社長と2人で東京に行くわけですが、なんか毎度のことながら、収録前日は全然眠れなく、っていうかホテルではなんか寝つきが悪く、眠れないので暇つぶしにと持っていったこの本を読んでたらなんかすごく共感できて、なんかいろんなことがやりたくなって興奮してきたので、この興奮が冷めぬうちに今の考えを書き留めておこうと、出張にはいつも持っていっている「やりたいことノート」というメモ帳(笑)にやりたいと思ったネタを思いつく限り書いてました(^^; で、気が付いたら午前4時とかになっていて、もう寝なきゃとベッドに横になったのは良いけど、天上見ながらまたいろいろやりたいことの段取りを考えちゃったりして、結局午前5時くらいにたぶんようやく寝たと思います。 明日は朝から某歌番組の収録を気合でがんばってきます。 というわけで、今日はおしまい。 それでは、おやすみなさーい。 |
2003/09/20(土)■ | ||||||||||||||||||||||
P/ECEでヴォイスチェンジャー公開です(^^ | ||||||||||||||||||||||
はい、今日はお昼までのんびり寝て、嫁さんとテレビを見たりしてごろごろしてから、昨日発見した再配布・2次加工OKのサンプル音声を使って、今回作成した「P/ECEでヴォイスチェンジャー」の加工後音声を録音してました。 録音方法は、P/ECEのイヤホンOUTをPCのサウンドカードのマイクINに接続し、PCのスピーカについてるヘッドホンOUTにヘッドホンをつないで、ヴォイスチェンジャー基板に付けているイヤホンマイクのマイクをPCスピーカからのヘッドホンに当てて録音しました。ああ、ややこしい(^^; さあ、それでは、P/ECEでヴォイスチェンジャーの成果を聴いてください。 サンプル音声は全部で3つ。それをノーマル・高い声・低い声・エコーの4種類で録音しました。 全てP/ECEから出力された音声を録音したものです。 サンプル音声は、「WEB WAVE LIB」様で公開されている音声ファイルを利用させていただきました。
どうでしたか? これらの変換はリアルタイムに行えるので、遊び道具としては結構使えそうです(^^ どうでもいいことですが、サンプルの女性の声って、ピッチ変換で高くすると、NHKのロボットパルタの声にそっくりですね(^^ ちなみに、今回製作した基板をP/ECEに取り付けた状態はこんな感じです。 (クリックすると拡大します) 基板には携帯電話用のイヤホンマイクを接続するようになっています。 P/ECEからのイヤホンアウトを今回の基板にケーブルで繋ぐとイヤホンマイクのイヤホン部で聴くことが出来ます。 また、半固定抵抗を調整して、音声データの振幅の中心を設定します。 基板の電源部に470μFの電解コンデンサをつけているので、一応電池駆動でも動作しますが、電池駆動の際のDC-DCコンバータからのノイズを結構拾ってしまうため、USBからの電源供給の方が音質が良くなります。 それでは次に、今回製作した音声入力用の基板の回路図を公開します。 この基板はP/ECE HandBook Vol.2で規定された標準仕様の拡張端子用なので、9番目のA/D変換入力端子が出ていないと使えませんのでご注意ください。 また、何度も言って申し訳ないのですが、この基板の回路図およびソースコードを参考にしてのいかなる作業も自己責任でお願いします。 では回路図の紹介です(クリックすると拡大します)。 今回の回路で入手が難しいものと言えば、イヤホンジャックでしょうか。 イヤホンマイク用のφ2.5のステレオジャックと、P/ECEからのイヤホンアウトをつなぐ、φ3.5のステレオジャックの2種類ですが、名古屋の大須でしたら、海外通商(2アメの奥とOAシステムプラザの通りの方)に200円くらいで売ってますので、作ろうとしている人はがんばって探してくださいね。 こういうジャックとか、接続用のピンとかって、通販で買えるのかなぁ。 秋葉原や大須とかに行けば、間違いなく買えると思いますが、その他の地域の人はどうしているんでしょうねぇ。あ、あと日本橋かな。 ちょっと横道にそれてしまいましたが、最後にソースコードの公開です。 p_voice_c_2003_0918.zip(37.7KB) 今回はA/Dコンバータとタイマーの使い方をちょっと解説したファイルを同梱してますので、何かのお役に立てれば光栄です。 ということで、これでヴォイスチェンジャーネタは終了。 なんか出来るまではすごくワクワクしてやってたけど、出来ちゃったらなんかやること無くなってちょっと寂しい感じもします。 次は何を作ろうかなぁ。 この前インターン生にライントレースカーを作ってもらって、思いのほかライントレースも面白かったので、今度は前々から企画していた、タミヤのこれとTrevaを使って、キャプチャ画像を画像処理してラインの位置を判断するライントレーサーロボでも作ろうかなぁ。 相変わらずこれにも元ネタがあって、いしかわきょーすけさんのトレQがそうです(^^; ああ、モータドライバICをまた買わないといけないなぁ。今度買うとしたらデジQにも使われている三菱のあれかな。確か、エリスショップで買えたと思うので、今度注文してみようと思います。ドキドキ。 というところで、今日はここまで。 明日は夕方から新幹線に乗って、東京に某歌番組収録のために行ってきまーす。 それでは、おやすみなさーい。 |
0707 |
2003/09/19(金)■ | |
もっと高速化しろって言われてもねぇ(- -; | ||
えー、今日は昨日始めた新しい機能追加の仕事と、別の高速化依頼が来ている仕事の実機が届いたので、その実機で色々高速化の手段を試してみました。 で、高速化を依頼されているのはあるUSBデバイスから送信されているデータを画像にして画面に表示するというものなのですが、うちの開発環境では最高の30フレームで表示されるのですが、実機は以前に購入した性能がちょっと低いものなので、14フレームにしかならなく困ってます。 今日はこれをなんとか高速化して、30フレームにしないといけないのですが、今のままでも結構高速化を施したやり方でやっているのでなかなかこれ以上の高速化は難しいのですが、他の表示を犠牲にしても高速化して欲しいと言うので、そうやって高速化したらなんとか24フレームまでにまでなったのですが、これでははっきり言って、アプリケーションとして使い物にならないので、なんとか実機の方を新しいものに変えて欲しいものです(--; ああ、どうなることやら。 機能追加の仕事がちょっと進んだので、それをお客様にメールを出して今日はおしまい。 家に帰ってからはまたサンプル音声探し。 今日はなんとか再配布・2次加工OKのサイトを発見し、良さそうな音声ファイルをDLして、寝ることにしました。 明日は、お休みの日なのでのんびりしたり、今日DLした音声ファイルの声をピッチ変換してヴォイスチェンジャーを公開しようと思います。 それでは、おやすみなさーい。 |
0706 |
2003/09/18(木)■ | |
新しい仕事を始めたり、デモったり | ||
はい、今日は昨日完成したヴォイスチェンジャーを社員のみなさんにデモって、それなりの評価は頂きましたが、私的にはいまいちの食いつきだったので、今度はもっとすごいものを作るぞとちょっと反省しました(--; と、デモを終えてからは、昨日打ち合わせした新しい仕事を始めました。 その他、同時進行でGCCで開発するファームのメイン側っていうか、本体の方のファームの開発の続きをしてました。 あと、別の仕事で高速化の依頼が出されているので、それについて社長と高速化の手段を相談していました。これでちょっとは早くなりそうな感じはしましたが、劇的な高速化にはならないと思うので、どうしようかなぁ。 で、今日は帰ってからは、ヴォイスチェンジャーの声の変化をみなさんにわかってもらうためのサンプル音声を色々探していました。 ほんとは私とかが喋って録音するのが一番楽なのですが、私の声は全然聴きやすくないので、やっぱり声優志望の方とかの良い声を使ったほうが良いですよね(^^; でも、今日は再配布・2次加工可能な音声ファイルを配布しているところを見つけれなかったので、また続きは明日です。 明日は、新しい仕事の続きをする予定です。 それでは、おやすみなさーい。 |
0705 |
2003/09/17(水)■ | |
P/ECEでヴォイスチェンジャー完成(^o^ | ||
えー、今日は、午後から去年出向に行っていた某所で、その時作っていたActiveXの機能追加の打ち合わせをしに行くので、午前中は軽い仕事をして、電車に乗って某所に向かいました。 約1年ぶりくらいに訪れましたが、特に変わった様子もなく、多少人の異動などはあったと思いますが、去年お世話になった人と再会し、世間話も含めながら打ち合わせをしてました(^^; で、色々現在の状況とかを見せてもらって、3時間くらい打ち合わせしてきました。 それから会社に戻って、いったん夕食に帰り、別の仕事をちょっと進めて今日は帰りました。 そして、家に帰ってからは作りたくてウズウズしてたヴォイスチェンジャーネタの続きです(^^; 今日は、昨日立てた予定通り、P/ECE Hand Book Vol.2で紹介されていたエコーマイクのリアルタイム化と、周波数を2分の1にする低い声の方のピッチ変換の実装です。 で、エコーマイクの方は、高い声のピッチ変換のリアルタイム変換の実現でだいたいリアルタイムにやる方法は見当ついていたので、エコーの方もサンプリングした瞬間のちょっと前の瞬間のデータを重ねて再生して比較的簡単にリアルタイム化を実現しました。 まぁ、音声を合成するインデックスの位置を変えるだけでできるので、P/ECE Hand Book Vol.2の記事のソースをちょっと変えるだけでこれはできそうですね。 そして、お次は低い声の方のピッチ変換。 声を低くする場合は、細かく区切ったある期間の音声データの再生を2回に1回インデックスを進めるようにして、周波数を2分の1にし、ちょっと音声データを省いて本当の声と再生時間が同じになるように調整してやれば、それらしい声になります。 ですが、低い声は普通に喋ると低すぎて何を言っているのかよくわからないので、おまけで付けたって感じですね(^^; というわけで、これでP/ECEでヴォイスチェンジャーの完成です。やったー\(^o^)/ このネタを考え始めた頃は、処理速度が足りないんじゃないかとか、リアルタイムで処理するのは難しいんじゃとか、色々不安な要素がいっぱいあって本当に実現できるかどうかもあやしく、すごく心配だったのですが、こうして完成したのを実感すると、なんとも言えない気持ちになりますね。 なんていうか、この達成感は忘れられないものになりそうっていうか…… 嬉しスギル!! って感じですかね(^^; 今日も夜遅くまでかかってしまいましたが、夜な夜なマイクに向かって「あーあー」言って、トイレに起きてきた嫁さんに見つかって、恥ずかしい思いをしてました(--; でも、本人はほんとに楽しんで感動しながらやっているので、決して変態行為とは認識しないで下さい。おねがいしますm(-_-)m いや、ほんとに。 というわけで、今日はこれでおしまい。 明日は、早速会社でデモって来ます。 それでは、おやすみなさーい。 |
0704 |
2003/09/16(火)■ | |
高い声っておもしろいなぁ(T^T | ||
はい、今日は先週の金曜日にやり始めた実験サンプルの続きと、GCCでつくっているファームを入れる基板の準備ができたので、動作テストをやってました。 実験サンプルは思いのほか良い感じに出来たので、今日の最後にお客様にメールで送って帰りました。 家に帰ってからは、最近勢いに乗っているP/ECEのヴォイスチェンジャーネタの続き。 帰ったのは12時くらいでしたが、なんか頭が冴えて来ていたので、そのままの勢いでピッチ変換ルーチンを実装していきました(^^; 昨日の段階では、なぜか高くなった声が2回再生されるという現象に悩まされていましたが、昨日寝る前に色々考えていたら、通常の速度でサンプリングしながら2倍の速度で再生したら、どんなにリングバッファを大きく取ってもいつかは再生がサンプリングを追い抜いてしまうことに気が付きました(--; つまり、新しいデータがサンプリングされて上書きされる前に、再生側のインデックスが書き込みインデックスを通り越えてしまって、前回再生した部分をまた再生してしまっていたのでした。 と、悩みの原因がわかったところで、ピッチ変換の原理にもあったように、今日は周波数を2倍で再生した後に、通常の再生時間と同じになるように(周波数2倍で再生すると、再生時間は2分の1になる)適当なデータを補充再生するという処理を実装していきました。 ところが、言葉では「適当なデータ」と簡単に書けますが、実際にそれを表現するのは難しく、エコーみたいに一度再生した音を減衰させて続けて再生してみたら、なんか声が震えて変になるし、逆に無音にしようとしても、プツプツ聞こえてやっぱり変。 で、色々試行錯誤した結果、言葉で上手く説明は出来ませんが、ちょっと前の瞬間の2倍の周波数の音声データを再生してから次に再生する2倍の周波数の音声データを再生すると、良い感じに聞こえるということがわかりました(^^; 最初の頃は原理のページの様に、2倍の周波数のデータを再生してから、適当なデータを再生するという風にしていて、それだとどうやっても上手い具合に再生されないので、もしかしたら順番を逆にしてみたら良いかもという逆転の発想でやってみたら、なぜだかわからないけど、上手く出来ちゃいました。しかもリアルタイムピッチ変換ですよ、お客さん(^o^/ P/ECEでできるかどうかさえわからなかったピッチ変換が、リアルタイムでできちゃったので、完成後は嬉しくて嬉しくて時計は午前3時を回っているのにも関わらず、いろんなmp3の歌声を高い声に変換して聴きまくってしまいました(^^; 明日も普通に仕事ですが、そんなことはどうでもいいんです。明日は気合でがんばりますから、今は喜びに浸らせてください(T^T というわけで、ひとしきり楽しんだので、今日はこれで寝ることにします。 ちなみに、今日はこの前に夏休みを利用して、うちに社会勉強に来ていた高校生が入社試験を受けに来てくれました。 実力の程は夏休みの期間でよーくわかったので、一応試験は受けてもらったものの、落とす理由も無いので、内定決定です(^^ ああ、これでようやく年下の後輩ができるんだなぁ(^^; でもまだまだ伸び盛りの時期なので、うかうかしてると色々追い抜かれてしまうかも。まぁ、今のところは大丈夫そうですが。 明日はあるところに新しい仕事の打ち合わせに行ってきます。 そして、家に帰ってからはエコーの方のリアルタイム化と、今度は声を低くするピッチ変換の方に挑戦したいと思います。 それらが出来たら公開しようかな。 それでは、おやすみなさーい。 |
0703 |
2003/09/15(月)■ | |
うーんあと少し(−−; | ||
今日はお昼まで寝て、P/ECEをちょっとやって、途中買い物に出かけて、DesignWave買ったり100均でまたイヤホン買ったり。 で、夜は嫁さんがなんか夕飯作るのが面倒だと言うのと、なんかピザ屋のチラシに500円分のクーポン券が付いてたので、久しぶりにピザを頼みました。 でも、ピザ屋がくれたチラシにもまた500円券が付いてて、なんだかなー。 そして夕飯を食べた後は、またP/ECEでヴォイスチェンジャーの続きです(^^ 昨日の段階でノイズ対策はだいたい終わったので、今日は今回のネタの最終目標である音声のピッチ変換部分の実装に取り掛かりました。 一応事前に色々サイトを巡ってピッチ変換の原理やサンプルソースなるものを手に入れていたので、とりあえずサンプルソースをそのまま移植して実行してみたんですが、これがまた全然役に立たなかった(泣)ので、結局ピッチ変換の原理解説を参考に自分でアルゴリズムを考えてみることにしました。 ピッチ変換の原理はこのページを参考にしています。 で、とりあえずサンプリングした音声データを1つ飛びに再生するようにして、音声データの周波数を擬似的に2倍にする処理をしてみたら、再生時間は半分になっているものの(当たり前ですが)、ちゃんと高い声になって聞こえてきました(^^ なんか、こうなるとは予想していましたが、実際に高くなって聞こえるとおもしろいもんですね。 でも、何回やっても高い声が2回くらい再生されちゃっておかしいので、今日はこれくらいにして明日また続きをやることにしました。 というわけで、今日はおしまい。 明日もヴォイスチェンジャ−ネタをがんばって進めていきます。 それでは、おやすみなさーい。 |