繁体   English   中英

C#WinForms应用程序显示播放和录制的声音的波形

[英]C# WinForms application to display waveforms of playback and recorded sound

我希望编写一个可以播放WAV文件的C#WinForms应用程序。 播放文件时,它会显示波形(类似于示波器)。

同时,用户可以通过麦克风录制声音,尝试跟随播放的原始声音(例如卡拉OK)。 该程序实时显示已录制声音的波形,因此用户可以从原始波形文件的波形显示和已录制声音的波形显示中进行比较。 比较将按照原始声音和录制声音的时间差(延迟)进行。 波形显示不必太高级(不需要剪切,复制或粘贴); 只需能够在时间表上看到就可以了。

我希望这足够清楚。 如果不清楚,请不要犹豫,要求进一步澄清。 非常感谢你。

您可以使用C#进行所需的操作,但是它不会像您想的那样工作。 实际上,在示波器型显示器中的录音外观与该录音如何向人耳发出声音之间没有任何关系。 因此,例如,如果我向您展示了在示波器显示屏上显示的两个WAV文件,并告诉您一个录音是吹奏大号而另一个录音是说一个人的话,那么您不会知道哪一个只是看在他们。

如果要将用户的声音与预先录制的WAV进行比较,则必须变得更加复杂,并对两者进行FFT分析并比较频谱,但即使那样,对于您要尝试的操作也无法真正起作用。

更新:经过一番思考,我不完全同意我的上述说法。 如果您想做的事情可能是某种工作,那就是使用示波器类型的效果来比较WAV的音调(或频率)和人的声音。 如果您将示波器调谐为一次显示相对较少的波长(可能是20个),则用户将能够迅速看到提高或降低声音音高的效果。

我有一个大约两年前写的小型C#应用程序示例,其功能类似,只是显示了FFT产生的光谱仪而不是示波器(基本上,光谱仪显示了频域信息,而示波器却显示了显示时域信息)。 它是实时的,因此您可以对着麦克风说话/唱歌/随便什么,都可以动态观察光谱仪的变化。

如果您愿意,我可以将其挖掘出来并在此处发布代码。 或者,如果您想自己做所有事情的乐趣,我可以发布一些指向所需代码资源的链接。

NAudio库具有很多功能(可能)为您提供所需的功能。 过去,我已经将它用于一些简单的操作,但是它比我需要使用的功能强大得多。

@ZombieSheep Naudio确实有用,但是有局限性。 例如,对波形显示没有太多控制,无法清除并重新绘制。 此外,如果时间过长,则无法向后滚动以查看前部分的波形。 还有一件事是,它仅适用于播放声音,而不适用于录制声音。 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM