- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在慢慢研究一个项目,如果计算机可以在 mp3 文件中找到某个样本出现的位置,这将非常有用。我会将这个问题限制为意味着相当精确的音频片段,而不仅仅是例如同一乐队在不同录音中的歌曲中的合唱,这将成为某种机器学习问题。我在想,如果它没有添加噪音并且来自同一个文件,那么它应该可以在没有机器学习的情况下以某种方式定位它发生的时间,就像 grep 可以在文本文件中找到单词出现的行一样。
如果您周围没有 mp3,可以使用公共(public)领域的网络上的一些音乐来解决问题,因此没有人提示:
curl https://web.archive.org/web/20041019004300/http://www.navyband.navy.mil/anthems/ANTHEMS/United%20Kingdom.mp3 --output godsavethequeen.mp3
一分钟:
exiftool godsavethequeen.mp3 | grep Duration
Duration : 0:01:03 (approx)
现在在 30 到 33 秒之间剪掉一点(la la la la ..):
ffmpeg -ss 30 -to 33 -i godsavethequeen.mp3 gstq_sample.mp3
文件夹中的两个文件:
$ ls -la
-rw-r--r-- 1 cardamom cardamom 48736 Jun 23 00:08 gstq_sample.mp3
-rw-r--r-- 1 cardamom cardamom 1007055 Jun 22 23:57 godsavethequeen.mp3
出于某种原因,exiftool 似乎高估了样本的持续时间:
$ exiftool gstq_sample.mp3 | grep Duration
Duration : 6.09 s (approx)
..但我想这只是它告诉你的近似值。
$ findsoundsample gstq_sample.mp3 godsavethequeen.mp3
start 30 end 33
如果它是 bash 脚本或 python 解决方案,即使使用某种 python 库,我也会很高兴。有时,如果您使用了错误的工具,解决方案可能会奏效,但看起来很糟糕,因此选择更合适的工具。这是一分钟的 mp3,还没有考虑过性能,只是为了完成它,但想要一些可扩展性,例如在半小时内找到十秒。
aubionset
是一个很好的候选人
最佳答案
MP3 是一种有趣的格式。基础数据存储在“帧”中,每帧长 0.026 秒。每帧都是声波的快速傅立叶变换,根据大小和比特率等以不同程度的质量编码。在您的情况下,您确定 mp3 具有匹配的比特率吗?如果是这样,则应该可以使用相对简单的 grep 样式方法,前提是您在 Frame 边界上进行选择。但是,完全有可能并且可能并非如此。
对于真正的解决方案,您需要在一定程度上处理 mp3 文件,以抽象出编码。但是,即使对于匹配的声音,也不能保证生成的波匹配,因为比特率和可能的帧对齐可能不同。这种很小的机会使它变得更加困难。
我会给你我解决这个问题的方法,但值得注意的是,这不是做事的完美方式,只是我最好的挥杆。即使它是同一个文件,也不能保证帧边界是对齐的,所以我认为你需要采取一种非常面向波的方法,而不是面向数据的方法。
首先,将 mp3 转换为 wave。我知道将其压缩会很好,但我再次认为面向波是我们唯一的希望。然后,使用高通滤波器来尝试去除任何样本之间不同的音频压缩伪影。一旦你有两个波形,在波形中找到小波应该是相对简单的。您可以遍历可能的起始位置并减去波浪。当你接近零时,你知道你已经接近了。
关于python - 使用 linux 或 python 查找 mp3 声音样本的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62524604/
我正在使用以下代码播放声音,过一会儿它将停止播放声音,这是因为我相信有太多的Mediaplayer打开实例,所以我添加了一个额外的mp.release();,这只会使我的应用程序崩溃(目前已被注释掉)
我正在查看 XV-6 代码,它通过它识别 MP 结构。它首先在 EBDA 的第一个 kb 中搜索。代码是这样的 static struct mp* mpsearch(void) { uchar *
我在我的应用程序中使用 Mp 饼图。它显示非常小的尺寸,我试图增加它的尺寸但它没有增加它的尺寸。我无法找出问题所在。请告诉我们如何增加尺寸。 这是我的代码: public class MPpiecha
如何使用 MPAndroidChart 实现此目的? 使用版本:com.github.PhilJay:MPAndroidChart:v3.1.0-alpha 添加图例和饼图边距的代码: private
亲爱的社区,我面临以下问题,我正在使用此处提供的 MP android 图表库创建条形图:https://github.com/PhilJay/MPAndroidChart . 我想为我的条设置渐变背
我正在使用 SAS MP Connect 开发我的第一段代码,以运行同一个 sas 作业的并行线程。 我知道 MP CONNECT 仅受可用 CPU 数量的物理限制,但理想情况下我不想在我的工作中使用
我最近购买了在 Linux 服务器上运行的 Stata MP12(8 核)许可证。 有没有人写过 Stata 程序,比如说模拟研究来测试 Stata MP 的性能?我想监视在作业处理过程中实际使用的内
我将不胜感激任何“一步一步”指南,说明如何更改 PHP/HTML 页面上的动态数据库连接/连接字符串/等上的代码,使其“即插即用”工作通过 ftp 将页面和 MySQL 数据库托管在“Azure 网站
试图在我的应用程序中放置一个“暂停”按钮,以播放一些声音片段循环播放。 当我打电话mp.pause();一切都破了,我完全迷路了! 这是我正在使用的方法。 protected void man
我想使用 Mp Chart 创建折线图 我想要实现的是这张图片 但是到目前为止我已经得到了这个。 我使用的代码是这个 private fun setData() { val entries
通常,我可能会编写一个类似simd的循环: float * x = (float *) malloc(10 * sizeof(float)); float * y = (float *) malloc
在与堆栈空间、OpenMP 以及如何处理这些问题相关的其他帖子上,有很多回复。但是,我找不到信息来真正理解 OpenMP 调整编译器选项的原因: 原因是什么-fopenmp在 gfortran 中暗示
我有一段代码,可以根据漂移、波动性和随机数计算任意给定日期的股票价格。但是当我检查输出列表时 - 它们是算术级数,而不是几何级数(幂函数)。我共享的变量有问题吗? 代码如下: #include #i
我正在尝试在 C++11 中并行化动态编程算法使用这种方法: void buildBaseCases() { cout << "Building base cases" << endl
我正在 open MP 中实现并行点积 我有这个代码: #include #include #include #include #include #include #define SIZE
我有一台服务器已经将近 4 年了,直到现在我都没有遇到任何问题(主机端)。我一直在更换主机,因为 ddos 的东西试图找到最适合我的东西。现在我买了一个 VPS(这不是我的第一个)并尝试运行我的服
所以我有两个内部平行区域的外部平行区域。是否可以将 2 个线程放入外部平行线,将 4 个线程放入每个内部平行线?我做了这样的东西,但它似乎无法按照我想要的方式工作。有什么建议吗? start_r =
我希望有人指出我们遇到的问题或解决方法。 使用/MP 编译项目时,似乎只有同一文件夹中的文件会同时编译。我使用 Process Explorer 滑动命令行并确认行为。 项目过滤器似乎对并发编译的内容
本文整理了Java中me.chanjar.weixin.mp.api.WxMpMessageRouter类的一些代码示例,展示了WxMpMessageRouter类的具体用法。这些代码示例主要来源于G
我正在监视 Stata/MP(Stata/SE 的多核版本)的 CPU 和内存使用情况,但我不是 Stata 程序员(更像是 Perl 人)。 任何人都可以发布一些代码,利用公共(public)数据集
我是一名优秀的程序员,十分优秀!