【sphinx】中文声学模型训练

一 .使用CMUSphinx训练声学模型

CMUSphinx工具包中自带好几个高质量的声学模型。美语模型,法语,中文模型。这些模型是经过优化的,为了得到最佳的性能,大多数指令交互系统能直接用这些模型,甚至一些大词汇量的应用也能直接用他们。

除此之外,CMUSphinx提供了功能,能适应现存的模型,为了满足有些需要更高精度的需求。当你需要使用不同的录音环境,(比如近距离,远离麦克分或者通过通话过程中),这些情况下做适应结果都是不错的,或者当需要转换一种口音,比如美语和英语的转换,印度英语的使用等。自适应能满足这样的要求:那就是你需要在很短的时间内,支持一门新的语言,那么你只需要基于词典做出一个声学模型音素集到目标音素集的转换就可。

然而,在某些时候,当下的模型并没法用。比如手写识别中,或者其他语言的监测中。这些情况下,你需要重新训练你自己的声学模型。如下教程会指导你如何开始训练。

二 开始训练

训练之前,假设你有充足的数据:

  • 用于单个人的指令应用,至少需要一小时录音,
  • 用于很多人指令应用,需要200个录音人,每人5小时
  • 用于单个人的听写,需要10小时他的录音
  • 用于多个人的听写,需要200个说话人,每人50小时的录音
  • 同时你要有这门语言的语音学知识,以及你有足够的比如一个月的时间,来训练模型

而如果你没有足够的数据,足够的时间,足够的经验,那么建议你还是做已有模型的自适应来满足你的要求。

数据准备

训练者需要知道,使用哪一个声音单元来学习参数,至少每个序列都要在你的训练集中出现。这个信息储存在transcript file中。

然后通过词典dictionary,其中对于每个单词都有相应的声音序列做了映射。

所以,除了语音数据,你还需要一个transcripts,和两个词典。一个中是每个单词到发音的对应表,以及一个中是不发音的单元的表,记为filler dictionay.

训练开始

训练之前需要准备如下两个目录

  • etc

    • your_db.dic - Phonetic dictionary
    • your_db.phone - Phoneset file
    • your_db.lm.DMP - Language model -语言模型
    • your_db.filler - List of fillers
    • your_db_train.fileids - List of files for training
    • your_db_train.transcription - Transcription for training
    • your_db_test.fileids - List of files for testing
    • your_db_test.transcription - Transcription for testing
  • wav
    • speaker_1

      • file_1.wav - Recording of speech utterance
    • speaker_2
      • file_2.wav

Fileids (your_db_train.fileids and your_db_test.fileids中列出了语音数据的文件名。如果是多个人的录音,可以加上录音人的信息,注意文件名不要加上后缀。

   speaker_1/file_1
   speaker_2/file_2

Transcription file (your_db_train.transcription and your_db_test.transcription) 中列出了你的录音文本。句子前后加上<s>标签,末尾加上句子序号。

   <s> hello world </s> (file_1)
   <s> foo bar </s> (file_2)

注意transcript中的行的序号和fileids中的序号要一致,如下,第二个句子放在第一位,就是个错误例子,会报错。

   speaker_2/file_2
   speaker_1/file_1
   //Error! Do not create fileids file like this!录音文件,比如是MS WAV格式,采样率为16khz,16bit,mono单声道的录音用于桌面应用。8khz,16bit,mono录音用于电话应用。 注意这点,错误的语音格式,常常是错误的原因。

Speech recordings (wav files) Recording files must be in MS WAV format with specific sample rate - 16 kHz, 16 bit, mono for desktop application, 8kHz, 16bit, mono for telephone applications. Double-check that, wrong audio file format is the most common source of training issues. Audio files shouldn‘t be very long and shouldn‘t be very short. Optimal length is not less than 5 seconds and not more than 30 seconds. Amount of silence in the beginning of the utterance and in the end of the utterance should not exceed 0.2 second.

It‘s critical to have audio files in a specific format. Sphinxtrain does support some variety of sample rates but by default it‘s configured to train from 16khz 16bit mono files in MS WAV format. YOU NEED TO MAKE SURE THAT YOU RECORDINGS ARE AT A SAMPLING RATE OF 16 KHZ (or 8 kHz if you train a telephone model) IN MONO WITH SINGLE CHANNEL.

If you train from 8khz model you need to make sure you configured feature extraction properly.

Please note that you CAN NOT UPSAMPLE your audio, that means you can not train 16 khz model with 8khz data.

Audio format mismatch is the most common training problem.

Phonetic Dictionary (your_db.dict) should have one line per word with word following the phonetic transcription

HELLO HH AH L OW
WORLD W AO R L D

If you need to find phonetic dictionary, read Wikipedia or a book on phonetics. If you are using existing phonetic dictionary. Do not use case-sensitive variants like “e” and “E”. Instead, all your phones must be different even in case-insensitive variation. Sphinxtrain doesn‘t support some special characters like ‘*‘ or ‘/‘ and supports most of others like “+” or “-” or “:” But to be safe we recommend you to use alphanumeric-only phone-set.

Replace special characters in the phone-set, like colons or dashes or tildes, with something alphanumeric. For example, replace “a~” with “aa” to make it alphanumeric only. Nowadays, even cell phones have gigabytes of memory on board. There is no sense in trying to save space with cryptic special characters.

There is one very important thing here. For a large vocabulary database, phonetic representation is more or less known; it‘s simple phones described in any book. If you don‘t have a phonetic book, you can just use the word‘s spelling and it gives very good results:

ONE O N E
TWO T W O

For small vocabulary CMUSphinx is different from other toolkits. It‘s often recommended to train word-based models for small vocabulary databases like digits. But it only makes sense if your HMMs could have variable length. CMUSphinx does not support word models. Instead, you need to use a word-dependent phone dictionary:

ONE W_ONE AH_ONE N_ONE
TWO T_TWO UH_TWO
NINE N_NINE AY_NINE N_END_NINE

This is actually equivalent to word-based models and some times even gives better accuracy. Do not use word-based models with CMUSphinx.

Phoneset file (your_db.phone) should have one phone per line. The number of phones should match the phones used in the dictionary plus the special SIL phone for silence:

AH
AX
DH
IX
时间: 2024-11-24 09:17:28

【sphinx】中文声学模型训练的相关文章

[sphinx]中文语言模型训练

一,不用分词的短词组语言模型训练 参考资源:http://cmusphinx.sourceforge.net/wiki/tutoriallm  sphinx官方教程 1)文本准备 生成文本文件,内含一行一个的单词.头尾有<s> </s>标记,如下所示,其中单词前后都有空格.文件为utf-8格式,文件名为test.txt. <s> 苏菲 </s> <s> 百事 </s> <s> 雀巢 </s> <s>

sphinx中文入门指南 (转自sphinx中文站)

Sphinx中文入门指南 wuhuiming<blvming在gmail.com>,转载请注明来源和作者 最后修改:2010年1月23日 1.简介 1.1.Sphinx是什么 1.2.Sphinx的特性 1.3.Sphinx中文分词 2.安装配置实例 2.1 在GNU/Linux/unix系统上安装 2.1.1 sphinx安装 2.1.2.sfc安装(见另文) 2.1.3.coreseek安装(见另文) 2.2 在windows下安装 3. 配置实例 4.应用 4.1 在CLI上测试 4.2

Sphinx中文分词在discuz 中的应用

Sphinx中文分词在discuz 中的应用. Sphinx-for-chinese是一款专注于中文搜索的全文检索软件,在sphinx的基础上添加了中文处理模块并优化了中文搜索效果.相比而言,以某某论坛几千万数据环境来看,比Coreseek封装的sphinx中文分词+mmseg3组合要好一点 1.准备环境 cd /var/tmp/ wget http://www.sphinx-search.com/downloads/sphinx-for-chinese-2.2.1-dev-r4311.tar.

(转)Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

Centos下Sphinx中文分词编译安装测试---CoreSeek

要支持中文分词,还需要下载Coreseek,可以去官方搜索下载,这里我用的4.1 百度云下载地址:      https://pan.baidu.com/s/1slNIyHf tar -zxvf coreseek-4.1-beta.tar.gz cd coreseek-4.1-beta cd mmseg-3.2.14/ ./bootstrap   //测试安装环境 libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'

Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

Tesseract-OCR-v5.0中文识别,训练自定义字库,提高图片的识别效果

1,下载安装Tesseract-OCR 安装,链接地址https://digi.bib.uni-mannheim.de/tesseract/ ? 2,安装成功 tesseract -v 注意:安装后,要添加系统环境变量 ? 3,cmd指定目录到 cd C:\Work\BlogsTest\TestPic,要识别图片的文件夹 识别:tesseract test.png result -l chi_sim ? 识别成功的效果,result.txt文件会自动生成 ? 要注意:Tesseract-OCR的

Sphinx+MySQL5.1x+SphinxSE+mmseg中文分词

什么是Sphinx Sphinx 是一个全文检索引擎,一般而言,Sphinx是一个独立的搜索引擎,意图为其它应用提供快速.低空间占用.高结果相关度的全文搜索功能.Sphinx能够很easy的与SQL数据库和脚本语言集成.当前系统内置MySQL和PostgreSQL 数据库数据源的支持.也支持从标准输入读取特定格式的XML数据.通过改动源码.用户能够自行添加新的数据源(比如:其它类型的DBMS的原生支持). Sphinx的特性  快速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

Sphinx 死文克斯 联合Mysql实现中文全文索引

PHP高级工程师之Sphinx中文全文索引 在这里和大家分享一下Mysql5.5以后支持的全文索引Sphinx安装配置和运行概念. 如有不善,多提意见(QQ:1595068971-邮箱:[email protected]) Sphinx服务器支持网络 工作原理: 文件包文件: api:使用php操纵Sphinx 访问这个文件. bin:经常用到的命令(生成Sphinx索引文件,操纵服务). etc:配置文件(csft_mysql.conf,uni.lib"海量词库文件 也叫 切词文件"