我目前正在使用隐马尔可夫模型进行说话人验证项目。我选择 MFCC 进行特征提取。我也打算对它应用VQ。我已经实现了 HMM 并在 Eisner 的数据电子表格上对其进行了测试:http ://www.cs.jhu.edu/~jason/papers/并得到了正确的结果。
使用语音信号,我似乎错过了一些东西,因为我没有得到正确的接受(我使用前向算法进行了概率估计 - 没有应用缩放)。我想知道我可能做错了什么。我使用 scikits talkbox 的 MFCC 函数进行特征提取,并使用 Scipy 的集群进行矢量量化。这是我写的:
from scikits.talkbox.features import mfcc
from scikits.audiolab import wavread
from scipy.cluster.vq import vq, kmeans, whiten
(data, fs) = wavread(file_name)[:2]
mfcc_features = mfcc(data, fs=fs)[0]
#Vector Quantization
#collected_feats is a list of spectral vectors taken together from 3 voice samples
random.seed(0)
collected_feats = whiten(collected_feats)
codebook = kmeans(collected_feats, no_clusters)[0]
feature = vq(mfcc_features, codebook)
#feature is then used as the observation for the hidden markov model
我假设 scikits 的 mfcc 函数的默认参数已经适合说话者验证。音频文件的采样率是 8000 和 22050。这里有什么我缺少的吗?我为 VQ 选择了 64 个集群。每个样本都是一个孤立的词。持续时间至少 1 秒。我还没有找到一个 Python 函数来删除语音样本中的静音,所以我使用 Audacity 手动截断静音部分。任何帮助,将不胜感激。谢谢!