修改HTK代码,让其支持中文

MISC常用工具(会接着补) Ctf之Misc工具 阅读详情

           利用HTK工具包进行语音识别建模时,遇到任务语法中存在中文时候,无法生成对应的底层网络,这样就需要对HTK源码的部分内容进行修改,以下是我对HTK源码HParse及HVite部分内容改动记录,希望对有需要的人有帮助!自己也做个备份!
添加下面函数
static int IsSpace(char c)
{
if ((c == 0x09) ||( c == 0x0D) || (c == ' ' ))
return 1;
return 0;
}
修改下面的函数

修改HParse.C
static void PGetSym(void)
{
..../////////////
while ( IsSpace(ch)|| (ch=='/' && inlyne[curpos]=='*') ) //这里特别注意,网上有一个文章这里修改出错

{
 
if (!IsSpace(ch) || isspace((int) ch)) /* skip space */
PGetCh();
else { /* skip comment */
PGetCh(); PGetCh();
while (!(ch=='*' && inlyne[curpos]=='/')) PGetCh();
PGetCh(); PGetCh();
}
}
..../////////////
以下部分代码为做修改
}
static void PGetIdent(void)
{
int i=0;
Ident id;
do {
if (ch==ESCAPE) PGetCh();
if (i<MAXIDENT) id[i++]=ch;
PGetCh();
}
while(!IsSpace(ch)&& ch!='{' && ch!='}' && ch!='['&& ch!=']' &&//!isspace( (int)ch)
ch!='<' && ch!='>' && ch!='(' && ch!=')'&& ch!='=' &&
ch!=';' && ch!='|' && ch!='/' && ch!='%');
id[i]='\0';
ident = GetLabId(id,TRUE);
}

 

修改HNet.c
ReturnStatus WriteOneLattice(Lattice *lat,FILE *file,LatFormat format)
{
...///////////////////////////////
else if (ln->word!=NULL) {
fprintf(file,"W=%-19s ",ln->word->wordName->name);//
// ReWriteString(ln->word->wordName->name,
注释掉
// NULL,ESCAPE_CHAR));
...////////////////////////////////
}
这样在生产的底层网络中就可以看到汉字,而不是汉字编码了。下面是我测试的一个简单例子:
这是taskgram中的内容
$somebody =我 | 小王 | 他们 | 他 | 你;
$place = 北京 | 图书馆 | 学校 | 家里;
$something = 出差 | 自习 | 上课 | 睡觉;
(SENT-START($somebody 在 $place $something) SENT-END)
没有修改HParse生产的网络
VERSION=1.0
N=11   L=22   
I=0    W=END_SIL             
I=1    W=sil                 
I=2    W=\344\275\240        
I=3    W=!NULL               
I=4    W=\345\260\274        
I=5    W=\346\265\251        
I=6    W=\345\245\275        
I=7    W=sil                 
I=8    W=START_SIL           
I=9    W=!NULL               
I=10   W=!NULL               
J=0     S=1    E=0    
J=1     S=3    E=0    
J=2     S=3    E=1    
J=3     S=3    E=2    
J=4     S=7    E=2    
J=5     S=8    E=2    
J=6     S=2    E=3    
J=7     S=4    E=3    
J=8     S=5    E=3    
J=9     S=6    E=3    
J=10    S=3    E=4    
J=11    S=7    E=4    
J=12    S=8    E=4    
J=13    S=3    E=5    
J=14    S=7    E=5    
J=15    S=8    E=5    
J=16    S=3    E=6    
J=17    S=7    E=6    
J=18    S=8    E=6    
J=19    S=8    E=7    
J=20    S=10   E=8    
J=21    S=0    E=9    
修改后的网络
VERSION=1.0
N=21   L=30   
I=0    W=!NULL               
I=1    W=!NULL               
I=2    W=SENT-START          
I=3    W=我                 
I=4    W=!NULL               
I=5    W=小王              
I=6    W=他们              
I=7    W=他                 
I=8    W=你                 
I=9    W=在                 
I=10   W=北京              
I=11   W=!NULL               
I=12   W=图书馆           
I=13   W=学校              
I=14   W=家里              
I=15   W=出差              
I=16   W=!NULL               
I=17   W=自习              
I=18   W=上课              
I=19   W=睡觉              
I=20   W=SENT-END            
J=0     S=20   E=1    
J=1     S=0    E=2    
J=2     S=2    E=3    
J=3     S=3    E=4    
J=4     S=5    E=4    
J=5     S=6    E=4    
J=6     S=7    E=4    
J=7     S=8    E=4    
J=8     S=2    E=5    
J=9     S=2    E=6    
J=10    S=2    E=7    
J=11    S=2    E=8    
J=12    S=4    E=9    
J=13    S=9    E=10   
J=14    S=10   E=11   
J=15    S=12   E=11   
J=16    S=13   E=11   
J=17    S=14   E=11   
J=18    S=9    E=12   
J=19    S=9    E=13   
J=20    S=9    E=14   
J=21    S=11   E=15   
J=22    S=15   E=16   
J=23    S=17   E=16   
J=24    S=18   E=16   
J=25    S=19   E=16   
J=26    S=11   E=17   
J=27    S=11   E=18   
J=28    S=11   E=19   
J=29    S=16   E=20   
至于HVite部分,我找了近一下午,总算找到改的地方了,修改HSheel.c 中WriteString函数
n=*p;
fputc(n,f);
//添加的行
// fputc(ESCAPE_CHAR,f);
// fputc(((n/64)%8)+'0',f);fputc(((n/8)%8)+'0',f);fputc((n%8)+'0',f);

我将相应的位置给注释上了,并将字符之间输出到文件中,这样在结果文件中就可以看到中文了~~

树莓派5+Perplexity打造上下文感知语音助手 语音助手本质是意图理解与响应生成的闭环系统,其核心挑战在于如何在资源受限设备上实现低延迟、高准确率的上下文连贯交互。传统端侧大模型受限于算力与内存,难以维持会话状态;而纯云端方案又面临隐私与延迟瓶颈。Perplexity API凭借原生支持conversation_id、source grounding和citation-aware summarization等机制,为边缘语音助手提供了‘语义锚定’能力——即在不牺牲答案可信度的前提下,将复杂查询蒸馏为精准结论。结合树莓派5的硬件抽象层优化(如环形缓冲区音频 阅读详情

相关推荐

HMM和DNN语音合成必备基础知识:音素和拼音的基础知识及工具初学

title: 音素和拼音的基础知识(HMM和DNN语音合成必备基础知识) tags: 深度学习,机器学习,数据挖掘, grammar_mindmap: true renderNumberedHeading: true grammar_code: true Author : Errol Yan(wechat: 13075851954 QQ:260187357 Email:2681506@gma...

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 2134

基于HTK中文普通话语音识别DEMO,LilyMandarinSpeechRecognition V1.0

DEMO简介: 这是一个中文普通话语音识别的最简单DEMO,LilyMandarinSpeechRecognition V1.0。   首先给出这款软件的下载链接: DEMO_LilyMandarinSpeechRecognition.rar 或者 http://vdisk.weibo.com/s/AUDeE/1368171209 语音不仅是人类之间进行信息

cglunhui的博客 2180

中文语音识别Python工程:训练脚本+本地识别+HTTP/GRPC服务一键部署

提供完整的中文普通话语音转文字解决方案,基于Python实现端到端ASR流程,涵盖语音预处理(WAV格式支持)、声学模型训练、语言模型融合及推理识别。内置train_speech_model.py用于模型训练,predict_speech_file.py支持单文件快速识别,asrserver_http.py和asrserver_grpc.py分别封装HTTP与gRPC服务接口,配套client_http.py和client_grpc.py供调用验证。工程自带Dockerfile,可直接构建容器镜像;包含sp

n4o5p6q7r的博客 388

语音识别系统之htk-----连续语音识别

在零落_World的合作下,终于完成了htk实现连续语音识别的一个流程。中间遇到了很多不大不小的问题。具体的可以见:             1.

u010384318的专栏 1万+

HTKBOOK中文版

HTKBOOK的中文版 http://htk.eng.cam.ac.uk/docs/docs.shtml

HTK中文版详细教程(最新版)

1 HTK基础 1.1 HMM基本原理 1.2 孤立词识别 1.3 输出概率说明 1.4 Baum-Welch Re-Estimation 1.5 识别和Viterbi解码 1.6 连续语音识别 1.7 说话者适应 2 HTK工具包概览 2.1 HTK软件架构 2.2 HTK工具的一般属性 2.3 工具包 2.3.1 数据准备工具 2.3.2 训练工具 2.3.3 识别工具 2.3.4 分析工具 2.4 版本3.4中的更新 2.4.1 版本3.3中的更新 2.4.2 版本3.2中的更新 2.4.3 版本3.1中的更新 2.4.4 版本2.2中的更新 2.4.5 版本2.1中的新特征 3 一个教程示例 3.1 数据准备 3.1.1 步骤一 任务语法 3.1.2 步骤二 字典 3.1.3 步骤三 录制语音数据 3.1.4 步骤四 创建脚本文件 3.1.5 步骤五 语音数据编码 3.2 创建单元音HMM 3.2.1 步骤六 创建Flat start单元音 3.2.2 步骤七 确定Silence模型 3.2.3 步骤八 Realigning训练数据 3.3 创建Tied-Stated三元音 3.3.1 步骤九 从单元音创建三元音 3.3.2 步骤十 创建Tied-Stated三元音 3.4 识别器评估 3.4.1 步骤十一 识别测试数据 3.5 运行识别器 3.6 HMM自适应 3.6.1 步骤十二 准备自适应数据 3.6.2 步骤十三 生成Transforms(转移矩阵) 3.6.3 自适应系统评估 3.7 Semi-Stated和HLDA Transform 3.8 总结

HTKBOOK汉化版

在看HTKBOOK的时候发现网上的汉化版不仅版本旧,而且还有不少错翻漏翻,所以准备汉化3.4版本HTKBOOK。因为HTKBOOK内容比较多,还有诸多脚注,不可能在几篇博客里放下,所以这篇博客里主要记录的是每章汉化资源的链接。       原本打算收1点资源分,但是想想我做的事情本来就是无价值的,也不能保证汉化得有多好,所以还是不收资源分好了。如果它有幸能被谁下载到并在看完后还感觉多少有些帮助,

u014432674的专栏 3723

HTK完全手册.pdf

全面介绍HTK,并且有所有HTK工具的使用手册。

语音识别工具箱之HTK安装与使用

语音识别工具箱之HTK安装与使用 HTK(HMM Toolkit)一款基于hmm模型的语音处理工具,早就听说它了,一直因为用MATLAB中的工具箱在学习,或自己写代码在做HMM方面的试验,所以没有接触到它。现在,上海朋友家里的网速超赞,我就趁投简历的时间空隙,下载了它的一些资料,包括安装文件,使用文档(最好中英文版都要找到,有时中文版更简洁,更节省时间,英文版则较详细,当发现自己调试不通过时

jingtianzi的专栏 2229

HTKbook 中文版 不是基础指南哦

HTKbook在网络上能找到的都是英文版的,而基础指南虽然有中文版的,但是太过简单。本资源是根据英文版翻译过来的。由于水平有限,可能存在错误,欢迎大家批评,指正。

语音识别资料 HTK BOOK 英文版和中文版

里面包含了HTK BOOK 的中文版和英文版文档,可以根据文档内容自己搭建小的ASR系统

【开源源码学习】

这(开发源码)对我们来说是件冒险的事,《喋血街头》对我们来说很重要——它就像是我们的孩子……大家已经要求了许久,我们也承诺了很多年,现在我们骄傲的宣布,《喋血街头》的源码已经公布到了Bitbucket,并且支持GPL2协议。每个人都有进入底层的权限,能够一窥《喋血街头》的运行机制,有时间和技术的玩家能修改/改变/更新/调适游戏中的任何东西了。另外,如果谁想把游戏转移到其他平台上(比如世嘉,挤眼),也是完全可以的哦!这个俯瞰视角的射击游戏于19年前发布,发行之初红极一时,现在游戏的源码放到了。

j8267643的博客 435

HTK book 中文版

HTK book中文版,非常详尽的HTK文档,也是较系统全面介绍语音识别的不错译本

JSP网上投票系统7htk2程序+源码+数据库+调试部署+开发环境

随着互联网技术的飞速发展和普及,网络投票作为一种高效、便捷、透明的决策方式,逐渐在各种选举、评选、调查等场景中得到了广泛应用。相较于传统纸质投票,网上投票不仅节省了时间、人力和物力,还能有效避免人为干扰和误差,提高投票的公正性和准确性。因此,开发一个功能完善、操作简便、安全可靠的网上投票系统,对于提升各类投票活动的效率和公信力具有重要意义。

Kittyxia001的博客 1318

PCIe信号眼图总是不开?手把手教你调CTLE和DFE参数(附实测波形对比)

本文详细解析了PCIe信号眼图调试中CTLE和DFE参数的优化方法,帮助硬件工程师解决眼图无法张开的问题。通过实际案例和步骤指导,介绍了如何调整CTLE直流增益和DFE抽头系数,提升接收端均衡器性能,确保信号完整性。

weixin_26805597的博客 214

大数据课程综合实验案例:网站用户行为分析

大数据课程综合实验案例1 案例简介1.1 案例目的1.2 适用对象1.3 时间安排1.4 预备知识1.5 硬件要求1.6 软件工具1.7 数据集1.8 案例任务1.9 实验步骤2 本地数据上传到数据仓库Hive2.1 实验数据集的下载2.2 数据集的预处理(1)删除文件第一行记录,即字段名称(2)对字段进行预处理(3)导入数据库3 Hive数据分析3.1 操作Hive3.2 简单查询分析3.3 查询条数统计分析3.4 关键字条件查询分析3.4.1 以关键字的存在区间为条件的查询3.4.2 关键字赋予给定值为

weixin_44616879的博客 1万+

Auto book 中文版(二)

3. 如何运行 configure 和 make 使用 Autoconf 构建的软件包通常带有 ‘configure’ 脚本。要在特定的系统中构建和安装这样一个软件包,用户必须运行该脚本以使目录树按顺序排列作好准备。实际的构建过程则是使用 make 程序进行的。 ‘configure’ 脚本测试系统的特性。比如,它可以测试 C 函数库中是否定义了用于 time() ...

weixin_34138521的博客 85

Unity物理引擎实战:从刚体重心到碰撞体,打造真实不倒翁交互

刚体(Rigidbody)是Unity物理系统的核心组件,它定义了游戏对象的物理属性,如质量、阻力和碰撞响应。其原理基于牛顿力学,通过物理引擎(如PhysX)实时计算物体的运动状态。在游戏开发中,刚体的价值在于能够模拟真实世界的物理行为,为玩家提供沉浸式的交互体验。碰撞体(Collider)则定义了物体的形状边界,用于检测与其他物体的接触。通过精细调整刚体的重心(Center of Mass)和碰撞体形状,开发者可以模拟出各种有趣的物理现象,例如低重心物体的动态平衡。这在休闲游戏、物理玩具模拟等场景中尤为实

weixin_33976326的博客 355

阿里云Qwen3-ForcedAligner实测:一键生成精准时间戳

本文介绍了如何在星图GPU平台上自动化部署Qwen3-ForcedAligner-0.6B镜像,实现语音与文本的精准字符级时间戳生成。用户上传音频和对应文本后,可一键获取毫秒级对齐结果,广泛应用于视频字幕制作、语言教学高亮同步及AI口语评测等场景,显著提升多模态内容生产效率。

weixin_42476987的博客 151

FPGA中的CMAC硬核与Interlaken硬核

CMAC硬核和Interlaken硬核是FPGA中两种重要的内置功能模块,它们分别在CNN推理和高带宽芯片到芯片接口方面发挥着关键作用。FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)中的CMAC硬核与Interlaken硬核是两种重要的内置功能模块,它们在FPGA设计中扮演着关键角色。需要注意的是,FPGA设计中的硬核选择不仅取决于硬核本身的性能,还需要考虑硬核与FPGA芯片其他部分的兼容性、功耗、成本等因素。Interlaken硬核。

weixin_41230430的博客 1481

cocos creator接入微信登陆sdk ios篇

cocos creator接入微信登陆sdk ios篇 背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇 步骤 去微信开放平台下载ios平台所需要的sdk 在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id 在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 将SDK文件中...

凤小鹿的博客 6362

[转]kaldi上的深度神经网络

转:http://blog.youkuaiyun.com/wbgxx333/article/details/41019453    深度神经网络已经是语音识别领域最热的话题了。从2010年开始,许多关于深度神经网络的文章在这个领域发表。许多大型科技公司(谷歌和微软)开始把DNN用到他们的产品系统里。(备注:谷歌的应该是google now,微软的应该是win7和win8操作系统里的语音识别和他的SDK等等) ...

weixin_33893473的博客 150

《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...

欢迎大家订阅《Autosar从入门到精通-实战篇》,下方整理了相关博文的目录(单击蓝色字体即可跳转),方便大家获取。 本专栏旨在:扫除Autosar工具链配置过程中的障碍,加深对Autosar理论的理解。 温馨提醒: 如有疑问,可在博文的“评论区”给小编留言,进行技术交流(评论区开启了验证功能,审核通过后,会显示); 如有疑问,也可以通过博文中的第一个图片联系小编,获取专栏/博文的实时状态; 由于工作限制,仅做个人技术交流。添加好友时,请备注您的“姓名-公司-职务...

「汽车电子助手」的博客 12万+

通用AI时代的技术代际切换与垂直厂商转型困境

通用人工智能(AGI)正推动AI产业从单点精度优化迈向系统级涌现能力,其核心在于大语言模型(LLM)驱动的跨任务泛化、上下文理解与自主工具调用。这一范式变革重构了技术价值评估标准——从WER、F1等传统指标转向MMLU、HumanEval等综合能力基准,也倒逼企业重新思考能力边界与组织适配性。对于长期深耕语音识别、教育信息化等垂直领域的厂商而言,过往积累的数据壁垒、交付能力和行业知识,在通用基座快速迭代、开源生态蓬勃发展的背景下,可能异化为路径依赖与迁移成本。本文聚焦技术代际切换中的典型张力,解析垂直AI厂

413

【Android 11】使用Android Studio调试系统应用之Settings移植(五):编译Settings 模块、解决编译错误

基于Andorid 11,系列第5篇文章,本章开始,终于轮到解决正主Settings的编译问题了,使用android studio编译出Settings.apk,能看到这一章的同学,也着实不容易了,再接再厉

上周的博客 3919

ZYNQ microblaze boot.bin固化步骤

一,ZYNQ移植软核的原理FPGA规模巨大而且功能复杂,因此设计的每一个部分都从头开始是不切实际的。一种解决的办法是:对于较为通用的部分可以重用现有的功能模块,而把主要的时间和资源用在设计中的那些全新的、独特的部分。这就像是你在开发应用程序的时候就不用直接去写驱动物理硬件的代码,而是直接调用Windows提供的API就行了。

wangjie36的博客 2781
上一篇: 用HTK搭建语音识别器实录(TIDigits数据库)
下一篇: HTK之决策树聚类
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值