精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
手机:138-0381-0136
Q Q:396806883
微信:ryysoft
锐英源精品开源心得,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究
在刚研究语音识别技术时,搜索到CMU Sphinx,因为它是知名高校卡内基梅隆大学开源项目,前期还是比较重视,后来发现流行度不及kaldi,且国内阿里巴巴也有kaldi下的模型,并且研究过程中确实发现CMU Sphinx有点小,还不太好扩展,所以转kaldi了,但这并不能否认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代码理解文档,欢迎同行交流。
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);
}