Php 确定说话声音的基本频率
我试图确定音频样本的感知音调(仅声音,无背景或音乐),然后将声音识别为低音、男高音、中音、女中音、女中音 为此,我使用aubio,它返回任何给定音频文件的时间码列表和相应频率 我很难找到最好的方法来使用数据来确定音高。我最初的想法要么不好,要么执行得不好:Php 确定说话声音的基本频率,php,audio,frequency-analysis,aubio,Php,Audio,Frequency Analysis,Aubio,我试图确定音频样本的感知音调(仅声音,无背景或音乐),然后将声音识别为低音、男高音、中音、女中音、女中音 为此,我使用aubio,它返回任何给定音频文件的时间码列表和相应频率 我很难找到最好的方法来使用数据来确定音高。我最初的想法要么不好,要么执行得不好: 我取aubio返回的频率列表,然后计算中位数,如下所示: exec('aubiopitch/pathtomp3file/audio.mp3',$output); //迭代aubio返回的时间/频率 //$output是一个数字对列表(每行一对
exec('aubiopitch/pathtomp3file/audio.mp3',$output);
//迭代aubio返回的时间/频率
//$output是一个数字对列表(每行一对):
//时间码后跟空格,后跟频率
//当时的代码是赫兹。
foreach($sample输出){
//提取频率信息
$freq_sample=substr($sample,strpos($sample,”);
//向阵列添加频率
$freqs[]=地板($freq_样本);
}
//要计算中值频率,请使用频率对数组排序
//在中间取元素
排序($freqs);
$median=$freqs[楼层(计数($freqs)/2)];
exec('aubiopitch/pathtomp3file/audio.mp3',$output);
在$output
中有什么?如果你没有得到数据,那么就不可能检测到。这就像说,从白光中挑出绿色,当你仅有的数据是流明输出时,它是一个行列表,每个行都有两个数字:时间码后跟一个空格,然后是该时间码的频率(赫兹)。你如何使用aubio
?你能在你确定音高的地方添加代码吗?我使用aubio和任何特殊参数,只是默认设置。然后我提取数据。请参阅问题中我的编辑。