Matlab利用API实现语音识别,频率16khz,通道1,出来的这个
ans =
空的 0×0 char 数组
这是代表什么啊
0×0 char 数组表示Matlab程序运行结果是一个空的字符串数组,也就是说,Matlab利用API实现的语音识别没有识别出相应的结果,出现这种情况可能是API调用错误,或者是声音信号太弱,或者是频率、通道不符合要求。
不知道你这个问题是否已经解决, 如果还没有解决的话:%离散高斯隐马尔可夫
Ov_1 = 3; %观测向量维数
T_1 = 215; %观测序列的长度
nex_1 = 1; %抽取观测样本组数(这个我也没搞懂,猜的)
%data = randn(O,T,nex); %随机生成的数据,用来测试模型
data_1 = importdata('1000.txt')
data_1 = data_1.'; %转置
M = 2; %高斯混合常数
Q_1 = 5; %隐变量数
left_right = 0;
prior_1_0 = normalise(rand(Q_1,1)); %随机生成一个初始状态概率矩阵,
transmat_1_0 = mk_stochastic(rand(Q_1,Q_1)); %随机生成一个初始状态转移矩阵
cov_type = 'full';
[mu_1_0, Sigma_1_0] = mixgauss_init(Q_1*M, reshape(data_1, [Ov_1 T_1*nex_1]), cov_type); %初始化
mu_1_0 = reshape(mu_1_0, [Ov_1 Q_1 M]);
Sigma_1_0 = reshape(Sigma_1_0, [Ov_1 Ov_1 Q_1 M]);
mixmat_1_0 = mk_stochastic(rand(Q_1,M));
%迭代训练模型
[LL, prior_1, transmat_1, mu_1, Sigma_1, mixmat_1] = mhmm_em(data_1, prior_1_0, transmat_1_0, mu_1_0, Sigma_1_0, mixmat_1_0, 'max_iter', 50);
B = mixgauss_prob(data_1, mu_1, Sigma_1, mixmat_1);
%导出第一层的隐藏状态序列
[path_1] = viterbi_path(prior_1, transmat_1, B);
xlswrite('D:\dhmm\middle.xlsx',path_1);
该模型的输入数据即观测变量是连续值,又是三(多)维的,所以我们要用高斯混合隐马尔可夫模型。该模型的输入是连续值,输出的隐状态序列是离散的。
这里的data_1 = importdata(‘1000.txt’) ,数据导入matlab后是215*3的
矩阵,行是时间序列,列是三维观测变量。这里程序包要求列是时间序列,行是观测变量,所以我们对其进行转置。随机生成一个初始状态概率矩阵和初始状态转移矩阵后,定义协方差矩阵类型cov_type = ‘full’。完成初始化和矩阵调整之后,调用程序包中的多维变量训练函数mhmm_em(),对迭代模型进行训练。然后导出隐藏状态序列到名为middle.xlsx的excel文件中,方便后续使用。