Questions tagged «audio»

音频,或者就信号处理而言,音频信号是声音的模拟或数字表示,通常是电压。

3
音频分析中的自相关
我正在阅读Autocorrelation,但是我不确定我确切地了解它是如何工作的以及应该期待的输出。我认为我应该将信号输入到交流功能并具有滑动窗口输入是正确的吗?每个窗口(例如,1024个样本)将输出一个介于-1和1之间的系数。该符号仅说明该线是向上还是向下,而值则说明相关程度。为了简单起见,可以说我没有重叠,只是每次将窗口移动1024个样本。在44100的样本中,我会得到43个系数,是否需要保留所有系数? 可以说我以200秒的信号执行此操作,得到8600个系数。我将如何使用这些系数来检测重复,进而检测速度?我应该创建某种神经网络来对它们进行分组,还是那太过分了? 谢谢你的帮助。

4
有关指数ADSR包络的方程式的帮助
通过应用代码,我实现了线性ADSR包络,用于调整振荡器输出的幅度。攻击,衰减和释放持续时间以及延音水平的参数可以在包络上设置,并且一切都会按预期进行。 但是,我想将包络线的斜坡形状调整为类似于大多数合成器用于更自然响应的方式:反指数乘以攻击,指数乘以衰减和释放。我无法正确计算公式来计算这些类型的斜坡形状的包络输出值。为了计算线性斜坡,我使用两点形式,插入从起音/衰减/持续/释放输入参数值得出的开始/结束 / y值。我似乎无法使用相同的起点/终点x / y点值来为指数(标准和反向)斜坡制定正确的公式。XxxÿyyXxxÿyy 我保存了一个Desmos Graphing Calculator会话,该会话演示了我上面描述的线性渐变方法。 如果有人能帮助我指出正确的方向,将不胜感激。

1
应用A加权
我想计算给定信号的响度,并且遇到了这个问题。我对它的A加权方面有些困惑。我无法发布图片,但我认为该网站具有我需要的公式。(Wa = 10log ...) 我不了解的是如何在程序中实际使用它。如果f代表频率,那么大概我可以对值进行硬编码,因为它们将保持不变。在这种情况下,如何将其应用于Wa样本值以及使用哪些值?我是否要计算功率谱以获取WINDOW_SIZE/2值并将频带中的每个值与相关的预先计算的Wa值相乘,或者这样做是错误的方式?先感谢您。
11 algorithms  audio 

2
使用AMDF进行基音提取时如何处理低基数?
我正在使用平均幅度差函数来估计准周期音频信号的基本频率。AMDF定义为 dñ= 1ñ− n∑k = nñ− 1| 小号ķ− Sk − n|dñ=1个ñ-ñ∑ķ=ññ-1个|小号ķ-小号ķ-ñ| D_n = \frac{1}{N-n}\sum_{k=n}^{N-1}|S_k - S_{k-n}| 其中是信号的长度。当信号偏移等于其周期的量时,此功能将显示最小值。ññN 这是我用来提取音高的代码(在Matlab中): a = amdf(f); a = a/max(a); [p l] = findpeaks(-a, 'minpeakprominence', 0.6); pitch = round(sample_freq/l(1); 但是,我正在处理基频非常低的音频信号: 结果,出现音调加倍问题:检测到的最小值对应于信号周期的一半(即二次谐波): 我试图提取最大的峰,而不仅仅是第一个峰,但有时这个问题仍然存在。我该如何改善我的代码和/或AMDF功能以应对低基础?

3
数字失真效果算法
我在第124-125页阅读了UdoZölzer撰写的DAFX书中有关失真影响的书,它说该函数可以对失真进行适当的模拟: F(x )= x| x |( 1 − eX2/ | x |)f(x)=x|x|(1−ex2/|x|)f(x)=\frac{x}{|x|}\left(1-e^{x^2/|x|}\right) 有人可以解释这个公式以及我们得到什么样的信号吗? 据我了解,“ x”是采样信号,所以这是一个数字序列。| x |是什么 意思?它是否为每个采样值引用x的绝对值? 因此,如果我想对失真效果进行模拟, 我需要知道x的长度(由样本数给定) 循环中,我需要为每个样本值计算此公式 循环结束后,我得到了失真的信号(数字形式) 之后,我需要将其转换为模拟信号,以便可以听到。

1
超声波扬声器校准和发射校准信号
我正在尝试校准超声波扬声器,以发出可预测的信号,但可惜我一直遇到麻烦,这可能是由于缺乏DSP-fu所致。 一点背景 我希望能够播放尽可能接近我已校准的录音的声音。据我了解的理论,我需要找到扬声器的传递函数,并解卷积我想随其发出的信号。像这样(在频域中): X -> H -> XH 其中X是所发射的信号H是扬声器传递函数和XH是X倍H。./现在除法()应该给我H。 现在,为了发射校准信号,应将其除以H: X/H -> H -> X 做了什么 在三脚架上相隔1 m放置扬声器和已校准的麦克风。 记录了30多次150KHz-20KHz,20ms长的线性扫描,并以500 KS / s的速度记录。 使用下面的Matlab / Octave脚本对齐和平均后的信号,在该脚本下可以看到生成的信号。 files = dir('Mandag*'); rng = [1.5e6, 1.52e6]; [X, fs] = wavread(files(1).name, rng); X = X(:,1); for i=2:length(files) [Y, fs] = wavread(files(i).name, rng); sig = Y(:,1); …

1
对音频信号执行以产生有趣声音的基本操作类别是什么?
我不知道这个问题是否有意义,因为我是dsp的新手。 在我对音频dsp的有限尝试中,我遇到了: 调频 调幅 添加剂合成 减法合成 我的问题是:这些是信号处理(特别是音频)的主要基本类别吗? 换句话说,具有全套插件的FL Studio可以完成的所有效果和奇特的事情可以分解为上述4种操作的一系列和组合吗?还是还有一大堆?从理论上讲,带插件的现代DAW可以按这种方式分为任何类别吗?以上四个类别本身是否有意义? 背景知识:基本上,我正在尝试制作一个非常基本(但非常灵活)的音频合成器/编辑器,作为一个学习编程和音频dsp的项目。使用Java时,我首先模仿了现实世界中类似合成器的基本类,调用了Oscillator和LFO之类的东西,但是每次学习新东西时,我发现自己不得不重写所有内容以使新概念适合该程序。 我现在尝试重新开始,并提出程序的基本对象和结构。为了做到这一点,我需要知道如何允许这些对象进行交互等。 谢谢! 编辑* * * 感谢您提供有用的评论和答案。我意识到我可能一直低估了东西的dsp方面,我将无法仅为简单的合成器创建基本的模板和结构,然后对其进行扩展/构建。当我学习新东西和做事的“正确”方法时,我可能不得不一次又一次地进行重建……这将花费更长的时间,但是也许我会学到更多?同样抱歉,我似乎还没有足够的代表来投票支持任何人……我会尽快。 编辑*编辑*** 我应该补充一点,在谷歌搜索中发现了有关“合成类型”的基本指南,我发现它是相关且有趣的。

1
创建频谱图
我一直在尝试确定此任务的逻辑,并计划使用KissFFT源程序包执行快速傅立叶变换。请让我知道这是否正确: 分配FFT结构,即。我正在使用的窗口大小kiss_fft_alloc(N,0,NULL,NULL) 在哪里N。输入缓冲区将是N类型为的元素数组kiss_fft_scalar。输出缓冲区将是N/2 + 1类型为的元素数组kiss_fft_cpx。 解码N(窗口大小)PCM样本数。 对于每个PCM样本,平均每个通道的振幅(无符号样本),并从0缩放到2(除以65536.0),然后将结果存储到输入缓冲区中。 在输入缓冲区上执行窗口化(即Hanning)。 对输入缓冲区执行快速傅立叶变换,并将其存储到输出缓冲区中。由于我使用实数值作为输入,因此可以使用kiss_fftr()。 对于N/2输出值,获取转换后数据的平方大小,然后使用以下公式将这些值转换为dB刻度: 10 * log10 (re * re + im * im) 绘制N/2步骤6中的值。 丢弃输入缓冲区的前半部分,解码下一个(窗口大小/ 2)PCM样本,并对数据执行缩放和加窗操作。这样可以有效地滑动输入窗口,并避免必须在已处理的PCM样本上重做数学运算。 循环至步骤5,重复这些步骤,直到处理完所有样本为止。 从中释放已使用的内存kiss_fft_alloc()。 建议在执行FFT之前先从输入窗口中减去一个值,以使所得的DC值的大小为零。我应该从输入数据中减去平均值还是平均值? 另外,选择窗口大小时需要考虑哪些事项?除此之外,按照KissFFT的说明,它必须是偶数,使用较小的窗口大小也有好处。它会提供更好的图形吗?我认为大窗口大小会减少必须执行的FFT数量,这是使用大窗口大小的唯一好处吗? XXx 预先感谢您提供的所有指导。

4
音频输出质量
当数字设备(PC,便携式媒体播放器等)播放数字音频文件(ogg,mp3,flac等)时,无论设备类型/品牌如何,音频信号输出总是相同的,对吗?因此,声音质量不应有差异。例如,我有一个播放mp3文件的iPod。如果我在不同品牌的媒体播放器上播放同一文件,则声音质量应该相同,因为它是完全相同的信号(没有均衡器或任何声音改变)。 这是真的?如果这是真的,那么我认为就声音质量而言,只有耳机/扬声器才是最重要的。 PS:所有答案都非常好!希望我能接受所有
10 audio 

5
使用双线性变换产生的数学问题
因此,这与《食谱》有关,我大概在20年前尝试解决它,放弃了,并想起了未解决的问题。但这很直截了当,但我仍然陷入困境。 这是一个具有谐振频率和谐振的简单带通滤波器(BPF):Ω0Ω0\Omega_0QQQ H(s)=1QsΩ0(sΩ0)2+1QsΩ0+1H(s)=1QsΩ0(sΩ0)2+1QsΩ0+1 H(s) = \frac{\frac{1}{Q}\frac{s}{\Omega_0}}{\left(\frac{s}{\Omega_0}\right)^2 + \frac{1}{Q}\frac{s}{\Omega_0} + 1} 在共振频率 |H(jΩ)|≤H(jΩ0)=1|H(jΩ)|≤H(jΩ0)=1 |H(j\Omega)| \le H(j\Omega_0) = 1 并定义上下带限,以便 |H(jΩU)|2=∣∣H(jΩ02BW/2)∣∣2=12|H(jΩU)|2=|H(jΩ02BW/2)|2=12 |H(j\Omega_U)|^2 = \left|H\left(j\Omega_0 2^{BW/2} \right)\right|^2 = \tfrac12 |H(jΩL)|2=∣∣H(jΩ02−BW/2)∣∣2=12|H(jΩL)|2=|H(jΩ02−BW/2)|2=12 |H(j\Omega_L)|^2 = \left|H\left(j\Omega_0 2^{-BW/2} \right)\right|^2 = \tfrac12 我们称这些为“半功率带隙”。因为我们是音频,所以我们以八度为单位定义带宽,在模拟世界中,以八度为单位的与有关,如下所示:BWBWBWQQQ 1Q=2BW−12BW−−−−√=2sinh(ln(2)2BW)1Q=2BW−12BW=2sinh⁡(ln⁡(2)2BW) \frac{1}{Q} = \frac{2^{BW} - 1}{\sqrt{2^{BW}}} = 2 \sinh\left( \tfrac{\ln(2)}{2} BW \right) 我们正在使用双线性变换(具有预先扭曲的谐振频率),其映射为: sΩ0jΩΩ0←1tan(ω0/2)1−z−11+z−1←jtan(ω/2)tan(ω0/2)sΩ0←1tan⁡(ω0/2)1−z−11+z−1jΩΩ0←jtan⁡(ω/2)tan⁡(ω0/2)\begin{align} \frac{s}{\Omega_0} …

1
测量音频信号的时间延迟
在有人对我大喊之前,我完全意识到这个问题已经被问过无数次了。我向您保证,我已经阅读了现有的问题和答案,但是对于部分问题我仍然感到困惑。 我有一个在封闭环境中播放音乐(A)的声源。我有一个用来录制A的麦克风。我剩下两个共享相同特征和长度(样本数)的wav文件。 我的目标是计算A到达麦克风所需的时间。 我正在尝试使用互相关(numpy)执行计算: # Delay estimation corr = numpy.convolve(original_audio, recorded_audio, 'full') delay = int(len(corr)/2) - numpy.argmax(corr) distance = delay / sample_rate * 343 # sample_rate == 22050, m/s = speed of sound print("Distance full: %.2f cm" % (distance * 100)) 我始终获得300,000厘米范围内的值。扬声器和麦克风之间的距离约为2英尺。 这对我来说都是很新的,所以我确定我缺少明显的东西。 提前致谢。

3
如何检测实时音频输入中的口哨声,爆裂声和其他声音?
我已经阅读了很多关于SO的问题,坦率地说,每个问题都没有描述解决该问题的任何特定方法。有些人说“做FFT”,有些人说“零交叉”等。但是我只了解数字音频输入由一个特定频率的幅度阵列组成。很好。超越它。 现在我知道尼奎斯特定理,频率,振幅,傅立叶级数等,这是从2-3年前的某个学期在我的大学课程中做到的。但是那时候我们真的没有教过傅立叶在现实世界中的使用情况,而且我不花心思去研究更多关于傅立叶的知识,而不仅仅是学习通过该课程。但是现在我将不得不使用所有这些东西。 这是我要检测的声音的快照: 显然,声音具有独特的图表。我只想了解如何为图中的独特尖峰线提取其特定独特特征。像是什么幅度,频率等等,还有多少时间-尽管我猜这很微不足道。 我想要一个简单,循序渐进,不模糊的说明列表-我可以用谷歌搜索我不懂的术语。 像这样吗?- 获取输入音频数据 频谱图 获取您想要在无噪声环境中检测到的声音的频谱图 研究该图-绘制该声音的独特特征 利用(4)中找到的声音特征,做出某种可以检测实时音频馈送中那些特定特征的功能 如果找到匹配项,那么-工作已完成。 完善算法以消除误报。 AAABBBXXXZZZ 我当时想让用户在一个相当好的环境中记录他们想要存储的声音作为手势。并且用户只会在安静的时间间隔之间发出声音; 录制开始和结束时3秒。 可以这么说,在最初的3秒钟内,我的系统将确定当前输入是正常的安静背景声音。然后,图表中的突然变化将开始声音输入。然后,当录制停止时,录制将继续进行3秒钟,随后是安静的时间间隔。这将由用户手动完成。然后,它将仅自动存储图表中突然变化持续的那部分的特征-在填充时间之间的某个地方。 因此,该部分的特性将另存为该声音的手势数据,该数据随后将用于检测实时音频馈送中的特定声音。 问题是,我在用通俗的英语思考所有这些。我需要考虑数学和物理学,以便能够在我的代码中有效地实现它。关于我在代码中写什么和在哪里写,我真是一无所知,即使我有这么多库和关于SO的问题也是如此。 很抱歉,如果这很长。

2
音频信号的对数傅立叶变换(LFT)
我正在尝试尽可能准确地分析音乐。我当然尝试了FFT,但遇到了一些问题。 我发现低频比人类的听力分辨率低。我尝试了很长时间的FFT来解决此问题,但是即使以44100Hz采样率(意味着缺乏时间分辨率)以8192个采样/秒进行分析,我在低频上也没有足够的分辨率。 我发现解决方案很少。 首先,对FFT仓进行二次插值。 但这似乎不是一个完美的方法。这种方法的问题是: 1.“如果我想确定频率仓之间的频率,我应该选择哪三个仓进行插值?” 2.“即使我这样做,也没有关于结果的实际附加信息。我知道插值是一种棘手的方法。 其次,以所需的频率提取每个频率仓,因此我可以对数提取仓。 但是存在一个关键的计算成本问题:(可能超过)N ^ 2。 第三,对数傅立叶变换(LFT)。 这需要对数间隔的样本,并以令人难以置信的快速速度为我提供了我想要的结果。/programming/1120422/is-there-an-fft-that-uses-a-logarithmic-division-of-frequency 但是我不知道该算法。我试图理解并实施该论文,但由于缺乏英语和数学技能,因此无法实现。 因此,我需要实施LFT的帮助。
9 audio  fft 

1
识别聚集成形状的数据
我正在使用Python进行一个项目,以检测和分类一些鸟类歌曲,但发现自己处于将波形文件转换为频率与时间数据的位置。这并不是一个太大的问题,但是为了能够将不同的音节分为几类,我需要编写一些东西来检测何时数据集群为某种形状。为了让您大致了解数据的外观,以下是数据绘制时的图像: 我需要一些方法来获取每个单独的音节(每个形状的两侧都有分隔符)并将其保存到变量或自己的文件中,以便我可以使用SciPy在它们之间运行Pearson相关性。 另外,我更喜欢Python,但是如果您有其他方法可以使用其他语言进行编码,则可以开放。 谢谢!

3
别名频率公式
我正在攻读MSc计算机科学专业的多媒体系统课程,但在理解混叠频率的公式时遇到了一些麻烦-这可能是由于我对混叠信号的误解。 我对混叠信号的理解是,如果您对输入信号进行欠采样(即以小于最大频率两倍的速率进行采样),那么我们会出现混叠现象,因为我们采样的频率不足以捕获高频细节。混叠信号是获取这些样本值并将它们与一条平滑曲线相连的结果。 因此,由于纯正弦曲线每次振荡需要两个采样(每个转折点为1个),因此所得信号的频率为采样频率的一半-这将意味着混叠频率应仅为采样频率的函数。 别名频率的公式是信号频率的绝对差和采样频率的最接近整数倍-有人可以向我解释吗?提前致谢!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.