Python音频分析:找到每个m中最强拍的实时值

2024-09-29 19:34:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一首歌,我想用Python来分析它。在

我需要找到歌曲中的“主音”。 我用这个词是因为我不知道它的专业术语,但我的意思是:

https://www.youtube.com/watch?v=TYYyMu3pzL4

如果你播放这首歌的前一秒,我会数出大约4个主音。在

一般来说,这些声音与一个人哼这首歌时会哼唱的声音相同。在

这些叫什么?在librosa(或任何其他库/编程语言)中是否有一个函数可以帮助我确定它们在歌曲中的出现?在

我可以根据需要提供更多信息/示例。在

更新:在做了更多的研究之后,我相信我正在寻找所谓的“最强拍子”。Librosa已经有了一个beat_track函数,但是我认为这可以让你知道歌曲中的每一个节拍。我不是真的想要每一个节拍,只要那些最突出的。在这里,最强烈的音乐在屏幕上跳动,这是最有力的动作。这在视频中产生了一种协同效应-所有的东西都感觉连接在一起。在


Tags: 函数httpscom声音youtubewww歌曲watch
1条回答
网友
1楼 · 发布于 2024-09-29 19:34:47

解析音频以识别其声音原型的过程称为acoustic fingerprinting

音频有一个时间维度,所以要见证你的“主要声音”需要听一段时间的音频。。。通过连续的瞬时音频采样。音频可以被认为是一个时间序列曲线,在这个曲线中,您可以记录音频曲线的高度,数字化为PCM格式。听到一个给定的“主音”需要挂钟时间。这里你的音频在时域中处于自然状态。然而,一段音频的信息负载可以通过向fftapi调用提供一个音频样本窗口(以进行傅立叶变换)转换为其频域对应项。在

采用FFT的一个非常微妙的方面是,它从输入数据中去除时间维度,并用蒸馏代替它,同时保留输入信息的负载。另一方面,如果音频是周期性的,一旦通过应用傅立叶变换从时域转换到其频域表示,则可以通过应用傅里叶逆变换将其重建回相同的时域音频曲线。这些数据最初是一条随时间上下摆动的曲线,现在被投射成频率的扩散,每个频率都有强度和相位偏移,但却没有任何时间概念。现在,您可以从这个静态的频率数组中提取一组属性,这些属性可以用一个普通的struct数据结构表示,但也可以被其潜在的时间起源所浸透。在

在这里你可以找到你的“主要声音”。对于第一个近似值,您只需将最高的X频率及其强度值存储起来,这是对作为其“主要声音”的输入音频的给定时间段的度量。一旦你有了一个“主要声音”的集合,你就可以用它来识别任何后续音频何时包含“主要声音”的出现,方法是在你预先存储的“主要声音”集合和当前音频样本窗口的FFT之间执行差分匹配测试。当当前FFT结果的前X个频率的频率强度值与每个预先存储的“主音”比较时,您已经找到了匹配

我可以通过解释你是如何坐下来弹钢琴来完成那些黑白频键的傅里叶逆变换,或者说,在春雨绵延的草地上,泥泞不堪的货车行驶轨迹,就是无数满载货物的市场货车在前进时的傅立叶变换,留下一条越来越深的轨道,每个货车的轴宽都有印记,但我不会这么说

这里有一些音频指纹的链接

Python中的音频指纹识别 https://github.com/worldveil/dejavu

使用Python和Numpy进行音频指纹识别http://willdrevo.com/fingerprinting-and-audio-recognition-with-python/

连续音频流的类Shazam声指纹识别(github.com网站)https://news.ycombinator.com/item?id=15809291

https://github.com/dest4/stream-audio-fingerprint

音频地标指纹作为一个节点流模块-nodejs将PCM音频信号转换成一系列音频指纹。https://github.com/adblockradio/stream-audio-fingerprint

https://stackoverflow.com/questions/26357841/audio-matching-audio-fingerprinting

相关问题 更多 >

    热门问题