Sphinx-II用户指南

CMU狮身人面像集团

原件:Mosur Ravishankar(Ravi)
由Kevin A.Lenzo维护(lenzo@cs.cmu.edu公司)

计算机科学学院
卡内基梅隆大学
版权所有(c)1997-2001卡内基梅隆大学。


本文件不完整,但应在施工期间有所帮助。
上次更新时间:2001-03-29。

引言

Sphinx2是Sphinx-II语音识别系统的解码引擎卡内基梅隆大学。它可以用于建造小型、中型或大型词汇应用。它的主要特点是:

Sphinx2由一组库组成,其中包括核心语音识别功能以及低级音频捕获等辅助功能。这些库是用C语言,并已在多个Unix平台(DEC Alpha、Sun Sparc、HP)上编译运行WindowsNT或Windows95的奔腾/奔腾Pro PC。许多演示应用程序在此基础上还提供了识别引擎。

一些专门用于开发实际应用程序的功能已经包含在狮身人面像2中。例如,解码器的许多方面都可以在运行时。可以动态加载或切换新的语言模型。同样,新可以添加单词和发音。音频输入数据可以自动记录到文件以供将来分析。

本文档的其余部分结构如下:


Sphinx2软件

Sphinx2软件位于SourceForge公司.
注:本标段正在施工中。

运行Sphinx2应用程序的模型

为了运行Sphinx2应用程序,需要几个模型文件。应用必须通过几个论据本文档后面将介绍。解码器必须用初始化以下数据库:还有其他数据库,例如预先录制的语音数据,通常只能在CMU-SCS内访问。


识别引擎

核心语音解码器对有限长度的语音段或话语,一次一句。一句话可以多达几十句秒长。(虽然大多数人机交互可能在简短的短语或句子。)

基本认可

每个语句最多使用三个解码通过,其中两个是可选的:可选传球可提高准确性。然而,第二次传球(平坦的维特比搜索)会显著增加延迟。激活过程在初始化时配置一次。从那时起应用程序无法看到多个传递的。它只接收结果但是,随后可以在单词lattice中搜索其他,替代方案——或最优--应用程序的假设。

识别引擎的详细信息可以在中找到拉维山卡博士论文poscript文件.


配置活动语言模型和词汇

可以将多个语言模型加载到识别器中,但只有一个是活动的在识别任何话语的过程中。语言模型由字符串标识名称。通常未命名的名称为空字符串的人。

这个主动词汇交叉中的单词主动语言模型和发音词典。识别器只能从这个交集输出单词。

识别引擎可以通过多种方式进行识别,但通常只有介于两者之间话语:


强制对齐和所有电话识别模式

识别器可以运行到时间对齐提供要输入的成绩单语音,为输入文本生成时间分段,以及识别静默区域。时间对齐仅在批处理模式下可用。它包含在更多细节请参见下文。

狮身人面像2也可以用于所有电话产生纯语音的模式识别而不是正常的单词识别。全电话识别API是也可用于用户编写的应用程序。但是,输入只能来自预先录制的文件。

注意:识别引擎在其中一个中配置正常的,强制对齐,或所有电话初始化期间的模式。以后不能在这些模式之间动态切换。


应用程序编程接口

有三组主要功能或应用程序编程接口Sphinx2提供(API):原始音频访问、连续收听/静音滤波和核心解码器本身。

正如我们将在下面看到的,没有一个核心解码器API函数直接访问任何音频设备。相反,应用程序负责收集要解码的音频数据。这使应用程序可以自由解码音频源自任何来源的数据——标准音频设备、预先录制的文件,通过网络等远程位置的数据。由于大多数应用程序最终需要访问常见的音频设备并执行某种形式的静音过滤以检测语音/无语音条件,另外两个模块是提供Sphinx2作为便利。

(注:API通常使用整数32整数16用于32位和16位整数类型。这些是#已定义在编译时,通常是整数短的,


低级音频访问

没有两个平台为音频设备提供相同的接口。为了适应这种情况多样性,平台相关代码封装在通用接口中用于低级音频录制和播放。以下功能用于录制。可以在中找到完整的详细信息包括/ad.h.
  • 打开(_O):
  • 打开音频设备进行录制。返回一个手柄到打开的设备。(目前仅16KHz,16位PCM。)
  • 广告_开始_抄送:
  • 在与指定句柄关联的音频设备上开始录制。
  • 广告_广告:
  • 将最多指定数量的样本读入给定的缓冲区。它返回数字实际读取的样本数,可能小于请求的数量。特别地如果没有可用数据,它可能返回0个样本。大多数系统通常具有有限的内部缓冲量(最多几秒钟)。因此,此函数必须调用频率足以避免缓冲区溢出。
  • 广告_停止_抄送:
  • 停止录制。(然而,系统可能仍有内部缓冲数据剩余部分待阅读。)
  • ad_close(广告_关闭):
  • 关闭与指定音频句柄关联的音频设备。
    请参见示例/adrec。c(c)示例/adpow。c(c)两个示例演示了上述函数的使用。

    提供了一组类似的回放功能(当前仅在上实现WindowsNT/Windows95 PC平台)以下为:
  • ad_open_play(打开播放):
  • 打开音频设备进行播放。返回一个手柄到打开的设备。(目前仅16KHz,16位PCM。)
  • 广告开始播放:
  • 在与给定句柄关联的设备上开始播放。
  • 广告写入(_W):
  • 发送样本缓冲区以进行播放。该功能可以根据可用的内部缓冲区,接受的样本数少于提供的样本数。它返回实际接受的样本数。应用程序必须提供数据足够快以避免播放中断。
  • 广告停止播放:
  • 播放结束。继续播放,直到所有缓冲的数据都被消耗掉为止。
  • 广告关闭播放:
  • 关闭与指定句柄关联的音频设备。
    最后,音频库包含一个函数ad_mu2li(最大值)用于将8位μ定律样本转换为16位线性PCM样本。

    请参见示例/adplay。c(c)例如,从给定的输入文件回放音频样本。

    各种平台的音频API的实现包含在给定体系结构的模数库。


    持续聆听和静音过滤

    如前所述,Sphinx2只能解码小于每次大约30秒。然而,人们经常想离开录音连续运行并基于输入语音中的停顿。Sphinx2中的连续监听模块提供用于此目的的机制。

    静音过滤模块插入原始音频输入源之间和应用程序。应用程序调用函数继续_读取而不是直接读取原始A/D输入源(例如,通过广告(_R)描述的功能在上面).继续_读取只返回的那些段输入它确定为非静音的音频。其他时间戳信息用于通知应用程序已删除的静默区域。

    完整的连续侦听API定义于包括/cont_ad.h总结如下:
  • 继续_初始化:
  • 将新的连续侦听模块实例与指定的原始a/D关联手柄以及相应的阅读函数指针。例如,这些可能是返回的句柄打开(_O)和功能广告_广告描述在上面.
  • 控制_校准:
  • 通过读取几秒钟的原始音频来校准背景静音级别。之后应立即进行一次继续_初始化,以及在任何环境变化之后。
  • 继续_读取:
  • 读取并返回给定缓冲区中下一个可用的非静默数据块。(使用阅读功能和手柄提供给继续_初始化以获取原始A/D数据。)更多详细信息如下所示。
  • 继续_重置:
  • 刷新模块内缓冲的所有数据。用于丢弃累积的,而是未经处理的演讲。
  • 连续_设置_阈值:
  • 用于调整静音和语音阈值。
  • 继续_分离:
  • 将指定的连续收听模块与相关音频设备分离。
  • 继续_附加:
  • 将指定的连续收听模块连接到指定的音频设备。(类似于继续_初始化,但无需校准音频设备。)
  • 继续_关闭:
  • 关闭连续收听模块。
    有关的更多详细信息继续_读取功能:在操作上,每次呼叫继续_读取导致读取相关原始A/D源的模块(尽可能多的可用数据),扫描语音(非静音)片段并在内部排队。它会返回第一个可用的语音数据段(如果有的话)。除了返回非静音数据,该函数还更新一些参数,这些参数可能是申请兴趣:

    例如,如果连续两次调用继续_读取,时间戳为100000和116000,应用程序可以分别确定1秒(16000个样本)的静音在两次通话之间被吞没了。

    沉默区域并没有完全被切断。大约50到100毫秒的沉默保留在语音段的两端并传递给应用程序。

    最后,连续的听者不会连接由沉默。也就是说,对继续_读取将不会跨越由分隔的原始音频被吞噬的沉默。

    继续_读取必须频繁调用以避免缓冲区溢出导致输入数据丢失。应用程序负责打开和关闭实际记录(如果适用)。特别是,它必须确保该记录在校准和正常操作期间打开。

    请参见示例/cont_adseg。c(c)例如,使用连续收听模块分割实时音频输入分成不同的话语。类似地,示例/cont_fileseg。c(c)将包含音频数据的给定预录制文件分割为语音。

    持续听力的实施src/libfe/cont_ad.c文件.使用此模块的应用程序需要与利比亚自由贸易区利比亚共同银行(和诽谤罪如有必要)。


    语音到文本解码

    语音解码有几个方面:初始化、基本语音解码、域动态管理、日志记录和记账等。本节简要介绍了相关的Sphinx2 API函数。完整的规范可以在中找到包括/fbs。小时.

    与初始化和最终清理相关的两个函数是:
  • fbs_初始化:
  • 初始化解码器。输入参数(以公共命令行参数列表argc、argv)指定输入数据库(声学、词汇和语言模型)和各种其他解码器配置选项。(请参见参数引用.)如果指示批处理模式(请参见-ctlfn公司选项)这是此初始化的一部分。
  • fbs_结束:
  • 在应用程序退出之前清理解码器的内部。


    Sphinx2应用程序可以使用以下功能将语音解码为文本,一次一句话:
  • uttproc_begin_ott:
  • 开始解码下一句话。应用程序可以分配身份证件字符串。否则,将自动创建并分配一个。
  • uttproc_绘图数据:
  • 处理(解码)当前话语中的下一组原始A/D数据。这个可以是非阻塞,在这种情况下,许多数据可能只是排队内部进行后续处理。注意,只有16位线性PCM编码样本可以进行处理。A/D库提供单独的功能ad_mu2li(最大值)用于转换8位mu-law编码数据16位PCM格式。
  • uttproc_cepdata:
  • 这是对uttproc_绘图数据如果应用程序希望解码倒谱数据而不是原始A/D数据。
  • uttproc_end_utt:
  • 表示当前语句中没有更多输入数据。
  • uttproc_结果:
  • 完成处理内部排队数据并返回最终识别结果字符串。它也可以是非阻塞,在这种情况下可能会返回只处理了一些内部排队的数据。
  • uttproc结果示例:
  • 喜欢uttproc_结果,但返回分词信息(以10毫秒帧为单位),而不是识别字符串。一个可以使用此函数或uttproc_结果完成解码,但不能同时完成。
  • uttproc_部分_结果:
  • 在最终结果可用之前,可以使用此函数获取最新的部分结果(例如作为对用户的反馈)。
  • uttproc部分结果示例:
  • 喜欢uttproc_部分_结果,但返回单词分段信息(以10毫秒的帧为单位),而不是识别字符串。
  • uttproc_abort_utt程序:
  • 这是对uttproc_end_utt那个终止当前语句。无法获得进一步的识别结果。
  • 搜索设置lt:
  • 返回语句的N个最佳假设(请参阅中的更多详细信息包括/fbs。小时).
    这个非阻塞如果解码速度慢于实时,并且有可能丢失输入a/D数据处理时间过长。在非阻塞模式下,数据可能只需在内部排队并仅在所有输入数据之后处理当前的话语已经获得。类似地,中的非阻塞选项uttproc_结果允许应用程序响应实时用户界面事件。

    用于解码一个语句的应用程序代码片段通常如下所示:

    uttproc_begin_utt(….)虽然(不是话语的结尾){/*以某种方式从外部表示*/读取任何可用的A/D数据;/*长度可能为0*/uttproc_rawdata(上面读取的A/D数据,非阻塞);}uttproc_end_utt();uttproc_result(……,阻塞);
    请参阅中的演示应用程序示例对于几个变化:


    多个,命名LM可以驻留在解码器模块中在初始化期间或在运行时动态读取。然而,确切地说LM必须被选择并且被激活以解码任何给定的话语。如前所述,每个句子的主动词汇由交叉发音字典和当前活动的伦敦。以下辅助功能允许应用程序控制语言对解码器的相关方面进行建模:
  • lm_读取:
  • 从给定文件读入新的语言模型,并与给定的名称。应用程序只需要此函数来创建和加载LM动态地在运行时,而不是在初始化时。
  • lm_delete(删除):
  • 从解码器库中删除命名的LM。
  • uttproc设置_lm:
  • 将当前活动的LM设置为命名的LM。只能在中间调用话语。
  • uttproc_set_context(uttproc设置上下文):
  • 为下一个要解码的语句设置两个单词的历史记录,并给出第一个单词单词可以被LM利用的其他上下文。


    每个语句的原始输入数据和/或从中导出的倒谱数据可以记录到指定的目录:
  • uttproc_set_rawlogdir:
  • 指定应将语音A/D数据记录到的目录。话语被记录到文件<id>.raw中,其中<id>是字符串分配给它的uttproc_begin_utt.
  • uttproc设置日志目录:
  • 指定应将语音倒谱数据记录到的目录。像上面的A/D文件一样,话语被记录到文件<id>.mfc中。
  • uttproc_get_uttid:
  • 检索字符串身份证件用于当前或最近的话语。例如,用于定位记录的A/D数据和倒谱文件。


    全电话解码

    用于所有电话解码的API包括一个支持识别的单一函数从预先录制的文件:
  • uttproc_allphone_cep文件:
  • 对给定的文件执行所有电话识别,并返回生成的电话细分。


    应用程序示例

    两个简单的语音解码应用程序,使用基于tty的接口实现以及Windows界面,都包含在目录中示例:


    编译库和演示

    要在Unix平台上编译Sphinx2库:


    Allphone模式

    如果-所有电话标志是真的在初始化期间。在这种模式下,没有应提供语言模型;-线性矩阵函数-lmctlfn公司参数应该省略。


    强制时间校准模式

    Sphinx2(批处理模式)可用于将抄本与语音对齐,以便获取单词、电话或状态级别的时间分段。在这种模式下,没有应提供语言模型;-线性矩阵函数-lmctlfn公司参数应该省略。这个语句集(语音数据)由-ctlfn型一如既往地争论。此外,应提供相应的成绩单在并行文件中,它应该是-战术fn论点。这个文件中的每一行都应该包含一句话的抄本(没有其他东西;尤其是没有话语-id)。此文件的第一行应该只包含字符串*全部对齐(_A)*.

    通过设置标志可以获得单词、电话和州级别的对齐-塔沃德,-录音机、和-塔斯塔特酒单个到真的错误的.路线写入stdout(日志文件)。


    参数引用

    核心Sphinx2解码引擎在初始化。这些是库函数的参数fbs_init(int argc,char*argv[])定义于包括/fbs。小时.(当然,围绕Sphinx2库构建的应用程序可以有额外的参数。)许多参数(例如输入模型数据库)必须由用户指定。我们将介绍以下更重要的内容(余下内容具有合理的默认值):

    输入模型数据库

    标志 描述 违约
    -线性矩阵函数 可选的DARPA格式bigram/trigram回退LM文件,名称为空字符串。 没有。
    -lmctlfn 带有LM文件和关联名称列表的可选LM控制文件(每个条目一行)。这就是如何在初始化期间加载多个LM。 没有。
    -KB转储目录 包含LM文件的预编译二进制版本的可选目录(请参见生成LM转储文件). 没有。
    -dictfn(诊断) 主发音字典文件。 没有。
    -oovdictfn公司 可选词汇表外(OOV)发音词典。这些被添加到未命名LM(读取自-线性矩阵函数文件)使用unigram概率由-oovugprob公司. 没有。
    -ndictfn公司 可选的“噪音”单词发音词典。噪音词不属于LM和,就像沉默一样,可以透明地插入话语中的任何地方。 没有。
    -菲律宾国家石油公司
    -地图fn
    带有给定字典和声学模型。 没有。
    -hmmdir(hmmdir)
    -hmm目录列表
    -哥伦比亚广播公司
    Sphinx-II半连续HMM声学模型和代码簿目录。 没有。
    -发送umpfn
    -8bsen(英国先令)
    从32位HMM模型创建的可选8位senone模型文件(请参见构建8位Senone转储文件).-8bsen(英国先令)应该是真的如果使用8位传感器。 没有。


    解码器配置

    标志 描述 违约
    -ctlfn公司
    -ctl偏移
    -ctl计数
    列出话语文件的批处理模式控制文件(不带文件扩展名)解码。-ctloff集是首字母的数字文件中要跳过的语句,以及-ctl计数要处理的数字(跳过后,如果有)。-ctlfn公司不得为live-mode或应用程序驱动的操作。
    0
    全部
    -数据目录
    如果控制文件(-ctlfn参数)条目是相对路径名,则可选可以使用此参数指定它们的目录前缀。
    -所有电话
    应该是真的为配置识别引擎所有电话模式操作。 错误的
    -战术fn
    输入转录文件,与控制文件并行(-ctlfn公司)在强制对齐模式下。
    -阿霉素
    -adcext(adcext)
    -adchdr公司
    -阿德森迪安人
    在批处理模式下,-阿霉素选择A/D(真的)或倒谱输入数据(错误的).如果真的,-adcext(adcext)是要附加到-ctlfn公司参数文件,-adchdr公司每个中标头的字节数输入文件,以及-阿德森迪安人它们的字节顺序:0代表大发动机,1代表小发动机。使用这些标志,大多数A/D数据文件可以直接处理格式。 错误的
    未经加工的
    0
    1
    -挪威人
    -n之前
    倒谱均值归一化(CMN)选项。如果-n之前错误的,CMN仅根据当前话语计算(通常为批处理模式),否则基于过去的历史记录(实时模式)。 真的
    错误的
    -压缩
    -压缩机
    静音删除(解码器内,与连续的). 如果-压缩机错误的,基于当前话语统计(批处理模式),否则基于过去的历史记录(实时模式)。-压缩应该是错误的如果使用连续听力。 错误的
    错误的
    -agc最大值
    -agcemax公司
    自动增益控制(AGC)选项。在批处理模式下只有 -agc最大值应该是真的,并处于实时模式只有 -agcemax公司. 错误的
    错误的
    -活的,活的 强制一些实时模式标志:-n之前 -压缩机-agcemax公司真的如果任何AGC开启。 错误的
    -样品 采样率;必须为8000或16000。 16000
    -FWD平面 在树结构传递后运行平面化Viterbi搜索(以获得更好的结果精确度)。通常情况下错误的处于实时模式。 真的
    -最佳路径 在维特比搜索字格输出上运行全局最佳路径搜索(为了更好精确度)。 真的
    -康帕尔森 计算每个帧中的所有传感器,无论是活动的还是非活动的。 错误的
    -latsize咖啡 要分配的字格条目。较长的句子需要较大的格。 50000


    光束宽度

    标志 描述 违约
    -顶部 每帧计算的码字数。通常,在实时模式下缩小为1。 4
    -横梁
    -np光束
    树搜索的主要修剪阈值。在实况模式下,通常缩小到2e-6。 1e-6
    1e-6
    -lpbeam(激光束) 的附加修剪阈值转换到词法树的叶节点。在实况模式下,通常缩小到2e-5。 1e-5号机组
    -lponly梁
    -nwbeam(网络波束)
    然而,对于叶节点和词法树出口,还有更多的修剪阈值。通常在直播模式下缩小到5e-4。 3e-4号机组
    3e-4号机组
    -fwd平波束
    -fwd平波束
    可选的扁平词法Viterbi搜索的主阈值和单词退出修剪阈值。 1e-8号机组
    3e-4号机组
    -topsenfrm公司
    -最高阈值
    用于预测活动基本手机的前瞻帧数。(如果<=1,则所有基本电话假定每帧都处于活动状态。)-最上面的log(修剪阈值)应用于原始senone分数,以确定每个中的活动电话框架。 1
    -60000


    语言权重/惩罚

    标志 描述 违约
    -朗瓦特
    -fwd平面
    -救援
    词法树维特比搜索期间应用的语言权重,扁平结构维特比搜索和全局词格搜索。 6.5
    8.5
    9.5
    -无人值守地面传感器 用于插值均匀分布的单格概率的单格权重。通常在0.5-0.8范围内。 1
    -打开
    -锡尔彭
    -圆珠笔
    单词插入惩罚或概率(对于LM中的单词),沉默词的插入惩罚,以及噪声词的插入惩罚(来自-ndictfn公司文件)。 0.65
    0.005
    1e-8号机组
    -oovugprob公司 来自的OOV单词的Unigram概率(logprob)-oovdictfn公司文件(如果有)。 -4.5


    输出规格

    标志 描述 违约
    -匹配fn 每个语句的最终识别字符串写入的文件名。(旧格式,末尾是单词id。)
    -匹配段fn 喜欢-匹配fn,但包含分词信息:startframe#frames单词...(新格式,开头为单词id。)
    -reportpron公司 使单词发音包含在输出文件中。 错误的
    -罗洛格迪尔 如果指定,则将每个语句的原始A/D输入样本记录到指定的目录中。(每个话语一个文件,名为<uttid>.raw。)
    -mfclogdir公司 如果指定,则将每个语句的倒谱数据记录到指定的目录中。(每个语句一个文件,名为<uttid>.mfc。)
    -转储器 如果指定,则将每个话语的单词格转储到此目录中的文件中。
    -日志fn 解码器日志记录信息写入的文件名。 标准输出/标准错误
    -回溯 在日志文件中包含详细的单词回溯信息。 真的
    -nbest标准 要生成的N个最佳假设的数量。目前,此标志仅在批处理中有用模式。但应用程序始终可以直接调用搜索获取lt以获得它们。此外,当前的实施缺乏一些细节(例如,返回详细分数)。 0
    -nbestdir公司 N个最佳文件写入的目录(一个/多个)。 当前目录。
    -塔沃德
    -录音机
    -塔斯塔特酒
    运行时是否应生成单词、电话和状态对齐输出在强制对齐模式下。 真的
    真的
    错误的


    最后,其中一个参数可以是:-arg文件 文件名.这将导致从给定的文件。忽略此文件中以“#”字符开头的行。递归-arg文件不允许使用规格。


    按字母顺序排列的参数列表

  • 8bsen(英国先令):
  • 使用8位senone转储文件。
  • 阿德森迪安人:
  • A/D输入文件字节顺序。
  • adcext(adcext):
  • A/D输入文件扩展名。
  • adchdr公司:
  • A/D输入文件中标头的字节数。
  • adcin:
  • 输入文件包含A/D样本或倒谱(TRUE/FALSE)。
  • agcemax公司:
  • 计算AGC(最大C0归一化为0;估计,实时模式)。
  • agc最大值:
  • 计算AGC(根据当前话语,最大C0归一化为0)。
  • arg文件:
  • 参数文件。
  • 回溯:
  • 在日志文件中提供详细的回溯。
  • :
  • 主修剪束宽。
  • 最佳路径:
  • 在字格上运行全局最佳路径算法。
  • 哥伦比亚广播公司:
  • Codebooks目录。
  • 康帕尔森:
  • 计算所有传感器。
  • 压缩:
  • 删除静音帧(基于C0统计)。
  • 压缩机:
  • 删除静音帧(基于以前历史中的C0统计信息)。
  • ctl计数:
  • 要在批处理模式下解码的语句数。
  • ctlfn公司:
  • 控制列出要在批处理模式下解码的语句的文件。
  • ctloff集:
  • 要从控制文件中跳过的初始语句数。
  • 数据目录:
  • 控制文件项的目录前缀。
  • dictfn(诊断):
  • 主要发音词典。
  • 转储器:
  • 转储单词格的目录。
  • 圆珠笔:
  • 噪声词惩罚(概率)。
  • FWD平面:
  • 运行扁平化Viterbi搜索。
  • fwd平波束:
  • 用于平面搜索的主梁宽度。
  • fwd平面:
  • 平面搜索的语言权重。
  • fwd平波束:
  • 用于平面搜索的文字退出光束宽度。
  • hmmdir(hmmdir):
  • 包含声学模型的目录。
  • hmm目录列表:
  • 包含声学模型的目录。
  • 打开:
  • 单词插入惩罚(概率)。
  • KB转储目录:
  • 包含LM转储文件的目录。
  • 朗瓦特:
  • 词汇树搜索的语言权重。
  • latsize咖啡:
  • 要分配的字格的大小。
  • 居住:
  • 实时模式。
  • lmctlfn公司:
  • 列出初始化时要加载的命名语言模型文件的控制文件。
  • 线性矩阵函数:
  • 要在初始化时加载的未命名语言模型文件。
  • 日志fn:
  • 输出日志文件。
  • lpbeam(激光束):
  • 切换到最后一个电话波束宽度。
  • lponly梁:
  • 最后一部手机内部光束宽度。
  • 地图fn:
  • Senone映射文件。
  • 匹配fn:
  • 输出匹配文件。
  • 匹配段fn:
  • 输出带有分词的匹配文件。
  • mfclogdir公司:
  • 用于记录每个发音的倒谱数据的目录。
  • nbest标准:
  • 要产生/说出的N个最佳假设的数量。
  • nbestdir公司:
  • 编写N个最佳假设文件的目录。
  • 指示符号:
  • 噪音词词典。
  • n之前:
  • 基于先验话语统计的倒谱均值归一化。
  • 正常平均值:
  • 倒谱平均归一化。
  • np光束:
  • 树搜索的下一个电话波束宽度。
  • nwbeam(网络波束):
  • 用于树搜索的字退出梁宽度。
  • oovdictfn公司:
  • 校外单词发音词典。
  • oovugprob公司:
  • OOV单词的Unigram概率。
  • 菲律宾国家石油公司:
  • 电话文件(senone映射信息)。
  • 罗洛格迪尔:
  • 用于记录每个语句的A/D数据的目录。
  • reportpron公司:
  • 在输出匹配文件中显示实际单词发音。
  • 重新炮火:
  • 最佳路径搜索的语言权重。
  • 样品:
  • 输入音频采样率(16000/8000)。
  • 发送umpfn:
  • (8位)Senone转储文件。
  • 锡尔彭:
  • 沉默词惩罚(概率)。
  • 战术fn:
  • 强制对齐文字记录文件。
  • 录音机:
  • 是否应输出电话级别对齐信息。
  • 塔斯塔特酒:
  • 是否应输出州级对齐信息。
  • 塔沃语:
  • 是否应输出字级对齐信息。
  • 顶部:
  • 每个帧中要计算的前几个码字的数量。
  • topsenfrm公司:
  • 要向前看以确定活动基本电话的帧数。
  • 最高阈值:
  • 应用修剪阈值来确定活动基带电话。
  • 无人值守地面传感器:
  • 用均匀概率插值单格概率的单格权重。


    常见问题

    加快解码速度

    有几种方法可以加快解码速度:


    生成LM转储文件

    LM文件通常是ASCII文件。如果它们很大,那么阅读是很耗时的它们进入解码器。二进制“转储”文件的读取速度更快,并且更紧凑。

    LM转储文件可以由独立程序创建示例/lm3g2dmp。c(c)或解码器。独立版本可以从示例目录。该程序接受两个参数,即LM源文件和一个目录,其中将创建转储文件。它从原始LM文件中读取标头以确定LM的大小。然后,它通过附加一个.DMP公司LM文件名的扩展名。此文件已写入到第二个(目录)参数。(注意:转储文件不能已经存在存在!!)

    任何版本的解码器也可以自动创建二进制“转储”文件类似于上面描述的独立版本。它首先查找指定目录中的转储文件-KB转储目录参数。如果存在转储文件,它将读取该文件并忽略原始LM文件。否则,它将读取LM文件并在-KB转储目录目录,以便在后续解码器运行中使用。

    解码器不会为小于内部定义的二元数和三元数。


    构建8位Senone转储文件

    Sphinx-II senonic声学模型文件包含32位数据。(这些在指定的目录-hmmdir(hmmdir)参数。)然而,他们可以群集的低至8位以提高内存效率,而不会丢失识别准确性。聚类由离线过程执行,如下所示:
    1. 创建一个暂时的32位senone转储文件,方法是使用这个-发送umpfn标志设置为临时文件名,这个-8bsen(英国先令)标志设置为错误的,并省略-线性矩阵函数参数。解码器可以在创建32位senone转储文件后被终止,这会发生并在日志输出中宣布。
    2. 运行:/afs/cs/project/plus-2/s2/Sphinx2/bin/alpha/pdf32to8b 32位文件8位文件
      创建8位senone转储文件。也就是说,第一个参数pdf32到8b是上面创建的临时32位转储文件,第二个参数是8位输出文件。
    3. 删除临时32位文件。
    8位senone转储文件现在可以用作-发送fn参数设置为解码器-8bsen(英国先令)参数设置为真的.