检测iOS中音频文件中的间隙

时间:2014-02-28 17:26:21

标签: ios audio

我正在开发一个用于语言学习的应用程序(带有发音的外来词的卡片)。我可以使用语音,但我希望能够导入具有原生语音的音频CD。问题是给定部分的音频文件没有按字分割。有没有办法检测它们之间的差距?

我设法将iPod库中的歌曲导入app文件夹,因此我可以使用AVFoundation等。我认为可以通过处理个别样本,但我不知道如何做到这一点。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我终于通过处理单个音频样本来完成此任务。对另一个问题有很好的答案,这些问题确实有助于理解如何获得所需的所有音频信息: AVAudioPlayer - Metering& Reading audio samples via AVAssetReader

你必须:

  1. 计算每个样本的绝对值(幅度数据的浮点值)
  2. 忽略噪音(只需设置适合音频文件的容差)
  3. 迭代样本并保存声音信号的位置
  4. 请注意,样本是波的表示,它通过零,因此您需要向前分析一些样本以查看是否没有其他音频信号。这同样适用于有时可能高于容差的噪音。

答案 1 :(得分:0)

对于每个声音样本,s = samp [k],执行:

fac = 0.01
tot = (1.-fac) * tot  +  fac * (s*s) 

这种技术是低通滤波器的一种非常基本的形式;它将为您提供更真实的瞬时能量测量。

另一种轻量级技术将盒子整合最后一百个样本量,也称为平均值。

av = float[1000]
p=0

然后对每个样本:

tot -= ring[p]
ring[p] = s*s
tot += ring[p]
p = p+1  %  1000

另一件需要关注的事情是漏水积分器。

例如,您还可以在每10个样本中仅处理一个,这仍然可以捕获高达2205Hz的频率