- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我将大致说明我正在尝试做的事情并寻求建议。然后我会解释我目前的做法,并为我目前的问题寻求答案。
我有一个人说话的 MP3 文件。我想把它分成大致对应于一个句子或短语的片段。 (我会手动完成,但我们正在谈论数小时的数据。)
如果您有关于如何以编程方式或对某些现有实用程序执行此操作的建议,我很乐意听取。 (我知道语音事件检测并且我已经对其进行了一些调查,但我没有看到任何免费提供的实用程序。)
我认为最简单的方法是按特定时间间隔扫描 MP3 并找出平均音量低于某个阈值的位置。然后我会使用一些现有的实用程序在这些位置切割 mp3。
我一直在玩 pymad,我相信我已经成功地提取了 mp3 每一帧的 PCM(脉冲编码调制)数据。现在我被困住了,因为我似乎无法真正理解 PCM 数据如何转换为相对音量。我还知道其他复杂因素,例如多 channel 、大端与小端等。
关于如何将一组 pcm 样本映射到相对体积的建议将是关键。
谢谢!
最佳答案
PCM 是一种基于时间帧的声音编码。对于每个时间范围,您都会获得一个峰值水平。 (如果你想要一个物理引用:峰值水平对应于麦克风膜在给定时间从其静止位置移出的距离。)让我们忘记 PCM 可以对 8 位样本使用无符号值,并关注有符号的值。如果该值 > 0,则膜位于其静止位置的一侧,如果该值 < 0,则膜位于另一侧。与静止的错位越大(无论向哪一侧),声音越大。
大多数语音分类方法都从一个非常简单的步骤开始:将峰值电平与阈值电平进行比较。如果峰值水平低于阈值,则声音被认为是背景噪音。查看 Audacity 的 Silence Finder 中的参数,silence level
应该是该阈值。下一个参数 Minimum silence duration
显然是标记中断(或者在您的情况下是句子结束)所需的静默期的长度。
如果您想自己编写一个类似的工具,我推荐以下方法:
静音级别
)进行比较。阈值是您必须根据声音样本的具体情况(响度、背景噪音等)自行确定的东西。如果最大峰值低于您的阈值,则此设置为静音。Minimum silence duration
,则假设您在此处结束了一个句子。自己编写代码而不是继续使用 Audacity 的要点是,您可以使用高级分析方法改进分类。您可以应用的一个非常简单的指标称为过零率,它只计算符号在您给定的一组峰值水平(即您的值越过 0 线)中切换的频率。还有更多,它们都更复杂,但可能值得付出努力。看看discrete cosine transformations例如……
关于mp3 - 使用 pymad、pcm、vad 等检测口语音频文件中的停顿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2626345/
这是我一直想知道的事情,而且我在网上找不到任何提及它的内容。当一家来自日本的商店编写代码时,我能够阅读英文吗?或者诸如 C、PHP 之类的语言有他们编写的日语翻译吗? 我想我要问的是世界上每个编码员都
我有一个用外语(意大利语)编写的 VB5 应用程序。它使用也是意大利语的 Access 数据库。 我如何将其转换为英文? 我可能会将其移植到 .NET,但在此之前我需要以某种方式阅读并理解我在做什么。
有谁知道是否有任何可用于 javascript 的语言检测脚本/库?我想将它合并到 nodejs 中,但没有找到。 我不需要浏览器语言检测,而是字符串语言检测。“Hello World”将被检测为英语
有没有不是简单逐字翻译的语言翻译项目?一个具有先进算法/设计的? 目前主流和流行的翻译软件,例如谷歌翻译,似乎是查找一个词或一组连续的词,然后将其直接翻译成不知何故确定为最佳匹配的内容。但是因为它不是
我是一名优秀的程序员,十分优秀!