Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 从歌声中提取音高_Audio_Signal Processing_Voice Recording_Pitch - Fatal编程技术网

Audio 从歌声中提取音高

Audio 从歌声中提取音高,audio,signal-processing,voice-recording,pitch,Audio,Signal Processing,Voice Recording,Pitch,我想从歌声中提取音调。这首歌只包含一个声音,没有其他声音 我想知道给定时间点的响度和感知音调频率。因此,类似于以下内容: 0.0sec 400Hz -20dB 0.1sec 401Hz -9dB 0.2sec 403Hz -10dB 0.3sec 403Hz -10dB 0.4sec 404Hz -11dB 0.5sec 406Hz -13dB 0.6sec 410Hz -15dB 0.7sec 411Hz -16dB 0.8sec 409Hz -20dB 0.9sec 407Hz -24dB

我想从歌声中提取音调。这首歌只包含一个声音,没有其他声音

我想知道给定时间点的响度和感知音调频率。因此,类似于以下内容:

0.0sec 400Hz -20dB 0.1sec 401Hz -9dB 0.2sec 403Hz -10dB 0.3sec 403Hz -10dB 0.4sec 404Hz -11dB 0.5sec 406Hz -13dB 0.6sec 410Hz -15dB 0.7sec 411Hz -16dB 0.8sec 409Hz -20dB 0.9sec 407Hz -24dB 1.0sec 402Hz -34dB 0.0秒400Hz-20dB 0.1秒401Hz-9dB 0.2秒403Hz-10dB 0.3sec 403Hz-10dB 0.4秒404Hz-11dB 0.5秒406Hz-13dB 0.6秒410Hz-15dB 0.7秒411Hz-16dB 0.8秒409Hz-20dB 0.9秒407Hz-24dB 1.0秒402Hz-34dB
我如何实现这样的输出?我对与特定音符值对应的频率的细微变化感兴趣。我有一些DSP知识,我可以用C++和Python编程,但是我希望避免在可能的情况下重新发明轮子。

< P>注意,Hz和感知音高的频率的细微变化可能不是同一回事。感知的音调分辨率似乎随绝对频率、持续时间和响度而变化。如果你想获得更高的准确度,可能会有一些关于估算每个声门闭合之间的时间的研究论文(可能使用反褶积或模式匹配技术),这会给你一些音调周期。最简单的基音估计可能是某种形式的加权自相关,对于这种自相关,可以使用许多固定的算法和代码

由于dB为对数标度,该测量值可能更接近感知响度,但必须在一定测量持续时间内使用感知频率响应曲线对其进行频谱加权


似乎有关于这两个主题的研究论文,也有许多关于人类音频感知以及常见音频DSP技术的教科书。

我建议您阅读这篇文章 . 这是一种最简单的基音检测方法,效果非常好。
此外,为了测量信号的瞬时功率,您可以只取信号的绝对值除以1/√2(给出RMS值),然后平滑(通常为一阶低通滤波器)。我希望这有帮助。祝你好运

关于音高检测、乐器和语音/歌唱等主题,已经有很多问题和答案。你需要了解自相关、倒谱分析、,等等。试着阅读前面的一些问题,如果还有什么不清楚的话,再回答一些具体的问题。有一个关于音乐信息检索的Area51提案()正在进行中,这个问题非常适合。