【问题标题】:Detect gaps in audio file in iOS在 iOS 中检测音频文件中的间隙
【发布时间】:2014-03-23 17:52:56
【问题描述】:

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

我设法将 iPod 库中的歌曲导入到应用程序文件夹中,因此我可以使用 AVFoundation 等。我认为可以通过处理单个样本来实现,但我不知道该怎么做。任何帮助将不胜感激。

【问题讨论】:

    标签: ios audio


    【解决方案1】:

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

    你必须:

    1. 计算每个样本的绝对值(幅度数据的浮点值)
    2. 忽略噪音(只需设置一些适合您的音频文件的容差)
    3. 遍历样本并保存声音信号的位置

    请注意,样本表示经过零的波,因此您需要向前分析一些样本以查看是否没有其他音频信号。这同样适用于有时可能超过您的容忍度的噪音。

    【讨论】:

      【解决方案2】:

      对于每个声音样本,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 的频率

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-24
        • 2012-06-26
        • 1970-01-01
        相关资源
        最近更新 更多