gpt4 book ai didi

ios - 从音频的波形数据中检测说话人的性别

转载 作者:可可西里 更新时间:2023-11-01 06:14:18 27 4
gpt4 key购买 nike

我想为我正在开发的新闻视频翻译应用程序添加性别检测功能,以便该应用程序可以根据屏幕上的语音在男声和女声之间切换。我不期望 100% 的准确性。我用EZAudio获取一段音频的波形数据,用平均RMS值设置一个男女之间的threshold(cutOff)值。最初 cutOff = 3.3。

    - (void)setInitialVoiceGenderDetectionParameters:(NSArray *)arrayAudioDetails
{
float initialMaleAvg = ((ConvertedTextDetails *)[arrayAudioDetails firstObject]).audioAverageRMS;
// The average RMS value of a time period of Audio, say 5 sec
float initialMaleVector = initialMaleAvg * 80;
// MaleVector is the parameter to change the threshold according to different news clippings
cutOff = (initialMaleVector < 5.3) ? initialMaleVector : 5.3;
cutOff = (initialMaleVector > 23) ? initialMaleVector/2 : 5.3;
}

最初 adjustValue = -0.9 和 tanCutOff = 0.45。这些值 5.3、23、cutOff、adjustValue 和 tanCutOff 是从严格测试中获得的。还使用 tan of values 来放大值的差异。

    - (BOOL)checkGenderWithPeekRMS:(float)pRMS andAverageRMS:(float)aRMS
{
//pRMS is the peak RMS value in the audio snippet and aRMS is the average RMS value
BOOL male = NO;
if(tan(pRMS) < tanCutOff)
{
if(pRMS/aRMS > cutOff)
{
cutOff = cutOff + adjustValue;
NSLog(@"FEMALE....");
male = NO;
}
else
{
NSLog(@"MALE....");
male = YES;
cutOff = cutOff - adjustValue;
}
}
else
{
NSLog(@"FEMALE.");
male = NO;
}

return male;
}

adjustValue 的用途是在每次翻译新闻视频时校准阈值,因为每个视频都有不同的噪音水平。但我知道这种方法很菜鸟。我可以做些什么来创建一个稳定的阈值?或者如何规范化每个音频片段?

也欢迎使用其他或更有效的方法来根据音频波数据确定性别。

编辑:根据 Nikolay 的建议,我使用 CMU Sphinx 研究了性别识别。谁能建议我如何使用 Open Ears(适用于 iOS 平台的 CMU Sphinx)提取 MFCC 特征并输入 GMM/SVM 分类器?

最佳答案

准确的性别识别可以通过 MFCC 特征的 GMM 分类器实现。你可以在这里阅读:

AGE AND GENDER RECOGNITION FOR TELEPHONE APPLICATIONS BASED ON GMM SUPERVECTORS AND SUPPORT VECTOR MACHINES

到目前为止,我还不知道这方面的开源实现,尽管许多组件在开源语音识别工具包(如 CMUSphinx)中可用。

关于ios - 从音频的波形数据中检测说话人的性别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30397126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com