Matlab利用API语音识别

Matlab利用API实现语音识别,频率16khz,通道1,出来的这个
ans =

空的 0×0 char 数组

这是代表什么啊

0×0 char 数组表示Matlab程序运行结果是一个空的字符串数组,也就是说,Matlab利用API实现的语音识别没有识别出相应的结果,出现这种情况可能是API调用错误,或者是声音信号太弱,或者是频率、通道不符合要求。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/380970
  • 这篇博客你也可以参考下:基于MATLAB的深度自动编码器的无监督轴承异常检测
  • 除此之外, 这篇博客: MATLAB隐马尔可夫模型程序包应用例程中的 多维高斯混合隐马尔可夫模型 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    %离散高斯隐马尔可夫
    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
    该模型的输入数据即观测变量是连续值,又是三(多)维的,所以我们要用高斯混合隐马尔可夫模型。该模型的输入是连续值,输出的隐状态序列是离散的。
    这里的data_1 = importdata(‘1000.txt’) ,数据导入matlab后是215*3的
    矩阵,行是时间序列,列是三维观测变量。这里程序包要求列是时间序列,行是观测变量,所以我们对其进行转置。随机生成一个初始状态概率矩阵和初始状态转移矩阵后,定义协方差矩阵类型cov_type = ‘full’。完成初始化和矩阵调整之后,调用程序包中的多维变量训练函数mhmm_em(),对迭代模型进行训练。然后导出隐藏状态序列到名为middle.xlsx的excel文件中,方便后续使用。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^