使用 Swift 分析录制的音频文件以将语音转换为文本
Posted
技术标签:
【中文标题】使用 Swift 分析录制的音频文件以将语音转换为文本【英文标题】:Analyse recorded audio file with Swift for speech to text 【发布时间】:2016-07-06 10:11:29 【问题描述】:我可以使用 Swift for ios 录制音频并播放录制的音频文件。我要问的是是否可以检查录制的音频文件的背景噪音和音量/分贝,以便我可以确定它对于我的语音到文本框架来说已经足够好了。框架不是问题,我已经研究了所有可用的框架。
我很好奇是否可以使用 AVFoundation 或 Accelerate Framework 或任何其他框架分析录制的音频文件,以检查音频文件是否足够好/清晰,可以使用语音转文本框架进行处理。
我没有太多的音频知识,但我研究了一下,发现我可以在录制时获得峰值和平均分贝值,但是背景噪音呢?
任何信息都有助于使用 Swift 分析录制的音频文件。
【问题讨论】:
请记住swift
和objective-c
是高级语言,您很难在以实时优先级运行的严肃程序的DSP 线程上找到它们。为什么?因为所有舒适的东西(分配对象、内存管理、轮询和阻塞等)根本无法在实时线程上进行,除非您正在寻找麻烦。对于 DSP 代码,它运行 快速 至关重要。因此,您可以在swift
中编写您的 UI 或控制器,但对于 DSP 部分,例如 SNR 估计,最安全的选择将下降到 plain-C。
【参考方案1】:
SNR 估计是相当发达的领域。您需要实现一个语音活动检测器,它将噪声与语音分离,然后分别计算噪声能量和信号能量,然后计算比率。不过,这稍微超出了简单的数学范围,您需要了解统计数据才能实现像 Wada SNR 这样的合理算法,该算法是在 here 实现的。
您将无法在 Swift 中找到它的实现,此类软件通常用 C 或 Matlab 实现,您必须移植实现。
与语音识别相比,噪声估计是一个小问题,它涉及更高级的算法。最好考虑 Swift 中现有的语音识别包,例如 TLsphinx 或 OpenEars。
【讨论】:
谢谢。据我搜索,在 Swift/Objective-C 中没有可用的 SNR 或 VAD 解决方案。语音识别已经在工作,但感谢您的建议。我可以分析录音期间从 audioRecorder 返回的平均功率和峰值功率(以 dB 为单位),所以这是我目前找到的唯一分析。 @Nikolay Shmyrev 我想使用 wada snr。下载了你说的那个文件夹,不知道怎么安装。找不到任何文档 @Nikolay Shmyrev 我就类似问题提出了一个新问题以上是关于使用 Swift 分析录制的音频文件以将语音转换为文本的主要内容,如果未能解决你的问题,请参考以下文章
swift 录制多个音频 并将音频转换为mp3 并合成多个mp3文件为一个文件
在 tableview Swift 3 中保存并显示录制的语音笔记