Tag: 音频

什么是最好的.NET音频压缩库?

我正在为.NET寻找一个好的音频压缩库。 使用MP3的任何东西都已经出局(因为许可问题)。 基本上我只需要能够将常规WAV音频数据压缩成某种格式,然后解压缩回WAV。 最好是代码都是.NET(C#或VB.NET),但我认为这不太可能。 它应该是无损的或相对无损的(最好是192个MP3,最好是),压缩比至少要好到4:1。 我更喜欢基于缓冲区的API,但基于文件的API也可以。 有谁知道这样的事情?

WPF:实施MediaPlayer音频/video搜索器

我目前正在制作一个带有WPF MediaPlayer的MP3播放器(在WPF应用程序中),基本上,我想实现一个与当前播放歌曲一起移动的Song Seeker。 我已经实现了一个歌曲滑块(来自Sacha Barber的应用程序 ),当用户手动拖动导引头时(例如,歌曲从该位置继续),它可以工作但我无法弄清楚如何根据当前位置移动导引头这首歌曲。 麻烦的是我认为没有办法检查MediaPlayer的Position属性何时发生了变化,所以我对如何实现这个function感到难过。 关于如何解决这个问题的任何想法? [更新] 关于使用计时器增加导引头的问题,我实际上想到了使用我没有尝试过的原因,因为我认为使用MediaTimeline有更好的方法来实现MediaTimeline ……但我还没弄清楚如何。

如何渲染音频波形?

有没有与音频/编程相关的堆栈交换站点? 我正试图在WinForms中制作波形 我应该使用什么算法? 例如,如果每个像素有200个样本(垂直线),我应该从200个样本的那部分中绘制最低和最高样本吗? 或者我应该绘制低和高样本的平均值? 也许两者都有不同的颜色?

如何确定文件类型?

我需要知道我的文件是否是音频文件:mp3,wav等… 这该怎么做?

用C#编写音频播放器

对于一个非常特别的媒体播放器我有一个很酷的主意。 我喜欢将这个项目视为一个小型创业公司,因为我还不知道我的想法是否切合实际。 无论如何,在实现我的想法之前,我首先需要能够实现一个简单的音频播放器。 我对这个项目的首选语言是C#,只是因为它很容易使用,但我想其他任何面向对象的语言都会很好。 我开始时对音频一无所知。 我现在的主要目标是: 能够播放音频文件 – 尽可能多的格式(类似于VLC类型的播放器,但现在只有音频)。 能够分析音频文件 – 如,读取频率,幅度,音量和有关音频的其他信息。 我想这可能是一个好主意,是能够分析一种文件格式(PCM?),然后暂时将我想要分析的任何文件转换为该格式。 这是为了以后实现一种机制,比较歌曲和识别类似的歌曲,以推荐给用户(这个function不是我的想法的一部分,但我想,因为它现在存在于许多玩家,我需要也有它,如果我希望能与他们竞争)。 BTW – 我目前对音频/波长/频率等没有任何了解,所以如果有人能指出我关于这个分析function的正确方向,我会很感激。 也许将来我会扩展到播放video文件,但现在我专注于音频。 在网上搜索了一段时间后,我遇到了LAME。 问题是,它不是C#,我不确定如何使用它。 我知道有一个叫做“互操作性”的东西,应该让我通过C#使用本机DLL文件。 任何有关这方面的信息也会有所帮助。 任何帮助将非常感激。 谢谢,Malki 🙂

在C#中播放多个wav文件

我有一个应用程序,当按下或单击一个键或按钮时我需要播放一个wav文件,我使用SoundPlayer类,但当我尝试播放另一个wav文件同时正在播放的那个文件停止。 有没有办法同时播放多个wav文件? 如果它可以请你给我举例或教程? 这是我到目前为止所得到的: private void pictureBox20_Click(object sender, EventArgs e) { if (label30.Text == “Waiting 15.wav”) { MessageBox.Show(“No beat loaded”); return; } using (SoundPlayer player = new SoundPlayer(label51.Text)) { try { player.Play(); } catch (FileNotFoundException) { MessageBox.Show(“File has been moved.” + “\n” + “Please relocate it now!”); } } } 谢谢!

寻找C#音频分析库

我正在开发一个软件项目,我们的团队需要记录火车喇叭声。 我们购买了录音机; 它保存为.wav文件。 我们现在需要从文件中提取数据,如频率和幅度,以创建频谱分析和分贝水平图。 这类东西有没有C#库?

比较两个谱图以找到它们匹配算法的偏移量

我每天从互联网上录制2分钟的电台广播。 始终有相同的开始和结束的叮当声。 由于无线电广播的准确时间可能差不多6分钟,我必须录制大约15分钟的收音机。 我想确定这些歌曲在15分钟录音中的确切时间,所以我可以提取我想要的音频部分。 我已经启动了一个C#应用程序,我将MP3解码为PCM数据并将PCM数据转换为基于http://www.codeproject.com/KB/audio-video/SoundCatcher.aspx的频谱图 我尝试在PCM数据上使用交叉相关算法,但算法在6分钟左右非常慢,步长为10毫秒,有时无法找到叮当开始时间。 任何比较两个谱图匹配算法的想法? 或者更好的方法来找到叮当开始时间? 谢谢, 更新,抱歉延误 首先,感谢所有的主人,他们大多数都是相关的或有趣的想法。 我试图实现fonzo提出的Shazam算法。 但未能检测到频谱图中的峰值。 这是来自三个不同记录的起始叮当的三个频谱图。 我尝试使用blobfilterAForge.NET(但它无法识别峰值),模糊图像并检查高度差异,拉普拉斯卷积,斜率分析,检测一系列垂直条纹(但是有太多错误正)… 同时,我尝试了Dave Aaron Smith提出的Hough算法。 我在哪里计算每列的RMS。 是的是每列,它是O(N * M)但是M << N(注意一列是大约8k的样本)。 所以整体而言并不是那么糟糕,算法大约需要3分钟,但绝不会失败。 我可以选择那个解决方案,但如果可能的话,我更喜欢Shazam因为它是O(N)并且可能更快(也更冷)。 因此,你们中的任何一个人都知道一种算法可以始终检测这些光谱图中的相同点(不一定是峰值),这要归功于添加注释。 新的更新 最后,我使用上面解释的算法,我尝试实现Shazam算法,但未能在频谱图中找到适当的峰值,从一个声音文件到另一个声音文件不一致的识别点。 从理论上讲,Shazam算法是解决这类问题的方法。 Dave Aaron Smith提出的Hough算法更稳定有效。 我分割了大约400个文件,其中只有20个未能正确分割。 磁盘空间从8GB到1GB。 谢谢你的帮助。

NAudio用于播放正弦波的算法,其频率可以实时平滑地改变

到目前为止,我已经实现了在这篇博客文章中找到的算法,但成效有限。 我的程序的概念是初始化正弦波,然后根据鼠标在屏幕上的位置改变频率 – 向上移动鼠标,正弦波变高,反之亦然(基本上是使用鼠标的一种类型仪器)。 到目前为止我所实现的问题是,当正弦波的频率更新时,会发出一声咔哒声,而不是提供平滑的频率扫描,使其听起来像是有离散的频率级别。 我一直在NAudio论坛和这里搜索高低,但似乎没有其他人尝试使用NAudio做这种事情,或者其他任何声音模块 – 所有执行的类似程序类似地使用像Kinect这样的设备使用虚拟midi布线和现有的软件模块,但我想在不依赖外部软件包的情况下实现相同的概念。 我已经在NAudio论坛上发布了有关此问题的代码部分,正如您所看到的,我正在通过MarkHeath的建议来尝试找到解决问题的方法。

在C#中从麦克风获取数据

我正在尝试从麦克风(或线路输入)录制音频数据,然后使用C#重播它。 有关如何实现这一目标的任何建议?