我计划编写一个对话分析软件,它可以识别每个说话者、他们的音调和强度。音高和强度有些简单(通过自相关音高)。
我将如何识别个别说话者,以便记录他/她的特征?为每个扬声器的频率存储一些启发式方法就足够了吗?我可以假设一次只有一个人说话(严格不重叠)。我还可以假设,对于培训,每个演讲者可以在实际分析之前记录一分钟的数据。
我计划编写一个对话分析软件,它可以识别每个说话者、他们的音调和强度。音高和强度有些简单(通过自相关音高)。
我将如何识别个别说话者,以便记录他/她的特征?为每个扬声器的频率存储一些启发式方法就足够了吗?我可以假设一次只有一个人说话(严格不重叠)。我还可以假设,对于培训,每个演讲者可以在实际分析之前记录一分钟的数据。
音高和强度本身不会告诉你什么。你真的需要分析音高如何变化。为了识别不同的说话者,您需要将语音音频转换为某种类型feature space
,然后在此特征空间中与您的说话者数据库进行比较。您可能想在 Google 上搜索的通用术语是prosody
- 参见例如http://en.wikipedia.org/wiki/Prosody_(linguistics)。当你在谷歌搜索时,你可能还想阅读speaker identification
aka speaker recognition
,请参阅http://en.wikipedia.org/wiki/Speaker_identification
如果您仍在为此工作...您是否在声音输入上使用语音识别?因为例如 Microsoft SAPI 为应用程序提供了丰富的 API 用于挖掘语音声波,这可以使说话人识别问题更容易处理。我认为您可以在波形中获得音素位置。例如,这可以让您对元音进行功率谱分析,这可用于生成区分说话者的特征。(在任何人开始谈论音高和音量之前,请记住,共振峰曲线来自声道形状并且完全独立于音高,即声带频率,共振峰的相对位置和相对幅度是(相对! ) 与整体音量无关。) 上下文中的音素持续时间也可能是一个有用的功能。'期间的能量分布 n'声音可以提供'鼻音'特征。等等。只是一个想法。我希望自己在这个领域工作。