1

WAVファイルを再生できるC#WinFormsアプリケーションを作成したいと思います。ファイルを再生している間、波形が表示されます(オシロスコープと同様)。

同時に、ユーザーはマイクを介してサウンドを録音し、再生された元のサウンド(カラオケなど)を追跡することができます。プログラムは録音された音の波形をリアルタイムで表示するので、元の波形ファイルとユーザーが録音した波形ファイルの波形表示から比較を見ることができます。比較は、元の音と録音された音の時間差(遅延)と同じように行われます。波形表示は非常に高度である必要はありません(カット、コピー、または貼り付けの必要はありません)。タイムラインでそれを見ることができれば十分です。

これが十分に明確であることを願っています。不明な点がある場合は、遠慮なく詳細をお尋ねください。どうもありがとうございます。

4

3 に答える 3

2

C# でやりたいことはできますが、思ったようには機能しません。オシロスコープタイプのディスプレイで録音がどのように見えるかと、その録音が人間の耳にどのように聞こえるかの間には、事実上まったく関係がありません。たとえば、オシロスコープのディスプレイに表示された 2 つの WAV ファイルを見せて、1 つはチューバの演奏で、もう 1 つは人が文章を話しているのを録音したものだと言ったとしても、見ただけではどちらがどれであるかはわかりません。それらで。

ユーザーの音を事前に録音された WAV と比較したい場合は、より洗練された方法で両方の FFT 分析を行い、周波数スペクトルを比較する必要がありますが、それでも目的の音にはうまくいきません。

更新: 少し考えた結果、上記のステートメントに完全には同意できないと思います。オシロスコープ タイプのエフェクトを使用して、WAV のピッチ (または周波数) と人の声を比較したい場合は、うまくいくかもしれません。オシロスコープを調整して、一度に比較的少数の波長 (おそらく 20 など) を表示すると、ユーザーは自分の声のピッチを上げたり下げたりした効果をすぐに確認できます。

私は約 2 年前に書いた小さなサンプル C# アプリを持っています。これはこのようなことを行いますが、オシロスコープの代わりに FFT で生成されたスペクトログラフを表示するだけです (違いは基本的に、スペクトログラフが周波数領域の情報を表示し、オシロスコープが時間領域情報を表示します)。リアルタイムなので、マイクに向かって話したり歌ったりすることができ、スペクトログラフが動的に変化するのを見ることができます。

必要に応じて、これを掘り下げてここにコードを投稿できます。または、自分ですべてを楽しみたい場合は、必要なコード リソースへのリンクをいくつか投稿できます。

于 2011-03-03T13:57:37.227 に答える
1

NAudio ライブラリには、(おそらく) 必要なものを提供する機能がたくさんあります。過去に単純な操作に使用したことがありますが、使用する必要があったよりもはるかに強力です。

于 2011-03-03T14:01:33.137 に答える
0

@ZombieSheep Naudioは確かに便利ですが、制限があります。たとえば、波形表示をあまり制御できないため、クリアして再描画することはできません。また、長すぎると前部の波形を見るために後ろにスクロールすることができなくなります。もう1つは、サウンドの再生でのみ機能し、サウンドの録音では機能しないことです。ありがとうございました。

于 2011-03-04T01:38:33.363 に答える