首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测原始声音文件中的声音?

如何检测原始声音文件中的声音?
EN

Stack Overflow用户
提问于 2013-10-11 18:51:26
回答 2查看 904关注 0票数 0

我正在开发一个软件,可以自动记录和提取我的声音中的每一个单词。我用port音频库来解决这个问题。但是我被困在检测声音上:我设定沉默的值为零,所以如果有一个样本是零,它必须是一个声音的起点或终点。但是当我运行它时,这个程序创建了许多单词。我认为,因为我通过port音频读取的值是原始数据,所以不能这样处理。我说的对吗?我怎么才能修好它?顺便说一下,我正在用C++ :D编写代码

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-12 12:05:40

要检测PCM流中是否存在信号,您可以检测它。正如dprogramz所说,你的声卡的噪音地板可能并不完美,所以会有一些噪音信号被记录下来(即使没有麦克风连接)。

解决方案是使用沃克斯瓦德算法来检测语音的存在。VOX可能是很棘手的,因为在大多数消费级电子产品中,噪音地板很低,相对于信号而言,对人的耳朵来说是“安静”的。这意味着噪声地板和信号之间的振幅差异可能很小。如果您的声卡有AGC打开,这会使它更加困难,因为噪音地板可能移动。话虽如此,VOX可以成功地在消费级设备上实施。只是需要付出更多的努力才能确定门槛。如果做得最好,则在流处于活动状态时定期计算阈值。

如果我这样做,我会实现一个VAD算法。由于您的目标是检测您的声音,这应该提供一个可靠的结果,无论您使用的设备。

票数 1
EN

Stack Overflow用户

发布于 2013-10-11 18:59:14

我不认为这是因为它是一个原始的价值。原始声音文件是频率和音量信息的比特流。

但是,这个值很少(如果有的话)为零。你必须考虑到有少量的电噪音,是由麦克风。找出你麦克风的“空闲”dB (当你不对它说话时,只需测试它的水平)。然后,您需要设置一个静默阈值(对于一定数量的样本,设置在一定的dB级别以下)来检测开始/结束。试图检测零值几乎是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19325227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档