【WINAPI】音声録音について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
Ciel
記事: 252
登録日時: 9年前

【WINAPI】音声録音について

#1

投稿記事 by Ciel » 9年前

お世話になります。

winsockで多数接続可能なチャットがある程度完成したので、
ボイスチャットにチャレンジしようと思ってます。

そこで音声録音について調べていたら、低レベルAPIであるwaveInOpen関連の関数があることを知り、
色々試しています。
現在はメモリの許す限り無限に録音できるように改良し、waveファイルに書き出すところまで出来るようになりました。
ですが、音声を再生してみると、ノイズかどうかわかりませんが「サーッ」っていう音が混じって、かつ声が少し小さめに
取れているため、よく聞こえません。
サンプリングレートは11.025kHZで8ビットのモノラルで録音しています。
私のマイクがダメなのか原因がわからないので、誰か試していただけますでしょうか?

やり方は録音ボタン押して、そのあと好きなところで録音停止ボタンを押してください。
その後再生ボタンを押してください。

ちなみにWAVEFORMATEX構造体は下記のように設定しています。
wf.cbSize=NULL;
wf.nChannels=1;
wf.nSamplesPerSec=11025;
wf.wFormatTag=WAVE_FORMAT_PCM;
wf.wBitsPerSample=8;
wf.nBlockAlign=wf.nChannels*wf.wBitsPerSample/8;
wf.nAvgBytesPerSec=wf.nBlockAlign*wf.nSamplesPerSec;

他にもたくさん聞きたいことがあるのですが、とりあえず実験結果を伺ってからにしたいと思います。
よろしくお願いします。
添付ファイル
音声録音.zip
サンプル実行ファイル。
たぶん変なことは起きないはず。
書き出しボタンは録音してない状態で押さないで下さい。
(5.34 KiB) ダウンロード数: 129 回
oui C'est la Vie♪

アバター
Cir
記事: 32
登録日時: 9年前
住所: 近畿地方

Re: 【WINAPI】音声録音について

#2

投稿記事 by Cir » 9年前

ためさせていただきました。
こちらでは十分に聞き取ることの出来る音量で録音・再生されました。
また、めだったノイズもありませんでした。
ただ、使用したマイクがちょっと変わっているので、参考になるかどうか…。

【環境】
OS: WindowsXP HomeEdition SP3
マイク: NINTENDO64の周辺機器(NUS-021)

少し気になったのですが、オーディオの入力の音量が小さくなっていたりしていませんか?

アバター
Ciel
記事: 252
登録日時: 9年前

Re: 【WINAPI】音声録音について

#3

投稿記事 by Ciel » 9年前

Cirさん!ありがとうございます!
おっしゃるとおり、調べてみたらマイクの録音ボリュームがかなり小さかったようです><
この辺の知識がまったくなかったので、気がつきませんでした。
ボリュームを上げたら、ノイズもなく、声もはっきりと聞き取れました!ありがとうございました!

マイクからの録音に関してはこれで解決したのですが、
マイクからの録音ではなく、PCから直接出ている音を録音することは可能なのでしょうか?
waveInOpen関数の第二引数にデバイスのIDを指定するのですが、ここにはWAVE_MAPPERを指定し、
優先デバイスが設定されるようにしています。
この状態でマイクを差し込めば、マイクの音声を録音できるのですが、
PCから直接出る音(メディアプレイヤー再生等)を録音できればよいなと思っているんですが、可能でしょうか?

どなたか方法をご存知のかたがいらっしゃれば、ご回答よろしくお願い致します。
oui C'est la Vie♪

アバター
Ciel
記事: 252
登録日時: 9年前

Re: 【WINAPI】音声録音について

#4

投稿記事 by Ciel » 9年前

御津凪さんが、最高のアドバイスをくれたため解決いたしました。
ステレオミキサーを使えばできました。

御津凪さん、ありがとうございました!
oui C'est la Vie♪

閉鎖

“C言語何でも質問掲示板” へ戻る