簡體   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