锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 语音识别开源 / CMU Sphinx、CMU Sphinx开源社区、CMU Sphinx示例
联系方式
固话:0371-63888850

手机:138-0381-0136

Q Q:396806883
微信:ryysoft

锐英源精品开源心得,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究

 

CMU Sphinx

 

背景

在刚研究语音识别技术时,搜索到CMU Sphinx,因为它是知名高校卡内基梅隆大学开源项目,前期还是比较重视,后来发现流行度不及kaldi,且国内阿里巴巴也有kaldi下的模型,并且研究过程中确实发现CMU Sphinx有点小,还不太好扩展,所以转kaldi了,但这并不能否认CMU Sphinx的价值,CMU Sphinx对初学者来说比较友好。

CMU Sphinx

CMU Sphinx是Linux上最流行的语音识别应用程序之一,它可以正确捕获单词。它还使开发人员能够构建语音系统、与语音交互以及构建独特而有用的功能。

Sphinx的优点之一是它带有针对Ubuntu和衍生产品的预编译二进制文件。此外,它具有多种语言模型,因此您可以将其用于多种人类语言。

CMU Sphinx工具包具有许多用于不同任务和应用程序的软件包。有时会混淆选择的内容。为了正确理解,请对照列表

Pocketsphinx —用C编写的识别器库。

Sphinxbase — Pocketsphinx所需的支持库

Sphinx4 —用Java编写的可调,可修改的识别器

CMUclmtk-语言模型工具

Sphinxtrain —声学模型训练工具

 

您可以从sourceforge下载CMU Sphinx工具包。

对于Ubuntu和LinuxMint,有一个适用于CMU Sphinx的PPA,但似乎未更新,不支持Ubuntu 10.10 maverickMeerkat中使用,至少对我而言没有用。 ppa:dhuggins/cmusphinxppa:dhuggins / cmusphinx

cmu能方便的集成到手机端里面,也有可以移植到手机端的这种库。

锐英源对CMU的研究主要是在一个集成上面啊,把我们输入法的内核和CMU进行了集成,同时把CMU控制台模式集成到界面模式。另外对CMU的英文

文档进行了翻译整理。在整理过程中学到了语音识别的一些基础。 在研究过程中我们下载了如下的代码压缩包进行了一定的研究分析。

锐英源集成项目用到的源代码清单:

2019-03-06  15:54             1,745 args_converter.cpp//转换用文件
2019-03-06  15:07               410 args_converter.h
2016-01-24  06:34         3,266,776 cmudict-en-us.dict//语言字典
2019-03-06  15:15            10,245 continuous.c//连续识别代码
2019-03-06  15:16               198 continuous.h
2016-01-24  06:34           857,195 en-us-phone.lm.bin//语言模型
2016-01-24  06:34        29,208,442 en-us.lm.bin
2019-03-05  10:48             2,585 pocketsphinx_UI.cpp//应用类主文件
2019-03-05  10:48               497 pocketsphinx_UI.h
2019-03-07  09:21            10,956 pocketsphinx_UI.rc
2021-04-06  21:07               896 pocketsphinx_UI.sln
2019-03-12  08:44             7,487 pocketsphinx_UI.vcxproj
2019-03-12  08:43             2,865 pocketsphinx_UI.vcxproj.filters
2019-03-05  10:56               165 pocketsphinx_UI.vcxproj.user
2019-03-07  09:19             4,324 pocketsphinx_UIDlg.cpp//对话框文件
2019-03-07  09:14               794 pocketsphinx_UIDlg.h

锐英源搜索下载到的源代码压缩包:

2018-10-31  15:17        44,347,989 cmusphinx-en-us-5.2.tar.gz
2019-02-20  10:27        35,008,958 pocketsphinx-5prealpha-win32.zip
2018-10-31  15:46        31,354,573 pocketsphinx-5prealpha.tar.gz
2018-10-31  15:55         7,287,513 pocketsphinx-android-demo-5prealpha.tar.gz
2018-12-21  15:49         1,917,515 sphinxbase-0.8-win32.zip
2019-02-20  10:21         3,932,184 sphinxbase-5prealpha-win32.zip
2019-03-19  15:20        12,616,976 sphinxtrain-1.0.8-win32.zip
2018-10-31  15:25        43,769,550 zh_broadcastnews_16k_ptm256_8000.tar.bz2
CMU Sphinx开源社区

这里推出锐英源的国外内容翻译文章、CMU Sphinx使用技巧和CMU Sphinx代码理解文档,欢迎同行交流。

 
CMU在你开始之前
CMU声学模型
CMU建立一个语音字典
CMU语音识别基本概念
CMU建立语言模型
为CMUSphinx训练声学模型
CMU调节性能
  
CMU Sphinx示例
static void
recognize_from_microphone(HWND hHost)//识别麦克风输入,结果发送到参数句柄窗口里
{
    ad_rec_t *ad;
    int16 adbuf[2048];
    uint8 utt_started, in_speech;
    int32 k;
    char const *hyp;

    if ((ad = ad_open_dev(cmd_ln_str_r(config, "-adcdev"),
                          (int) cmd_ln_float32_r(config,
                                                 "-samprate"))) == NULL)
        E_FATAL("Failed to open audio device\n");
    if (ad_start_rec(ad) < 0)
        E_FATAL("Failed to start recording\n");

    if (ps_start_utt(ps) < 0)
        E_FATAL("Failed to start utterance\n");
    utt_started = FALSE;
    E_INFO("Ready....\n");

    for (;;) {
        if ((k = ad_read(ad, adbuf, 2048)) < 0)
            E_FATAL("Failed to read audio\n");
        ps_process_raw(ps, adbuf, k, FALSE, FALSE);
        in_speech = ps_get_in_speech(ps);
        if (in_speech && !utt_started) {
            utt_started = TRUE;
            E_INFO("Listening...\n");
        }
        if (!in_speech && utt_started) {
            /* speech -> silence transition, time to start new utterance  */
            ps_end_utt(ps);
            hyp = ps_get_hyp(ps, NULL );
            if (hyp != NULL) {
                printf("%s\n", hyp);
                fflush(stdout);
				SendMessage(hHost, WM_ADD_RESULT, hyp, 0);//hyp是结果,这种读,解析,获取结果,符合面向过程思想,适合初学者
            }

            if (ps_start_utt(ps) < 0)
                E_FATAL("Failed to start utterance\n");
            utt_started = FALSE;
            E_INFO("Ready....\n");
        }
        sleep_msec(100);
    }
    ad_close(ad);
}
 
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内