连接词识别的Level Building 算法。。。。。。

【新手基础教程】音频处理之关键词识别 isolated word 本文档在 MaixPy 0.5.1_128 minimum_speech_with_ide_support 固件测试通过,使用前请确保硬件录音功能可用。 这是一个孤立词识别的算法模块,用户通过录音生成词汇模板加载到模块中,再通过它识别到用户加载的词汇模板,并返回匹配的可能性,实现请参考基于STM32的孤立词语音识别。 孤立词识别 按照语音发音方式来分,有孤立词识别、连接词识别、连续语音识别 3 种;所谓孤立词识别(Isolated Word Recognition)是指在 阅读详情

看了一篇论文,A Level Building Dynamic Time Warping Algorithm for Connected Word Recognition,IEEE TRANSACTIONS ON ACOUSTICS, SPEECH, AND SIGNAL PROCESSING, VOL. ASSP-29, NO. 2, APRIL 1981,上面描述了Level Building 算法用于连接词识别,还讲了该算法与 Two level DP 算法的联系。。。。而Two level Dp算法已经可以很好的实现出来,但Level Building  算法在操作的过程中遇到了一点点小问题。。。。。代码如下,希望大家能指出来。。。。。

N=size(T,2);%测试序列的帧数
K=length(DataSet);%参考模板个数
L=7;%连接词最大数目
%Algorithm S2
%Word level Matching 
%Initialize
D=inf(N,N,K);
for e=1:N %起点标号
    for b=e-40+1:e-8+1 %终点
        if b>0
            for v=1:K
                dist=dtw(T(:,b:e), DataSet{v}.mfcc);
                 D(b,e,v)=dist;
            end
        end
    end
end

%Initialize初始化 第一级
F(1,1:N,1:K)=-1;

for e=2:N
      mindstk=inf;
      v1=-1; %最优词索引
     for v=1:K
         mindist=inf;
         k=-1;
         for b=1:e-1
             if e-b+1>=8&e-b+1<=40
             if D(b,e,v)<mindist
                 mindist=D(b,e,v);
                 k=e; %保存上一个结束点
             end
             end
         end
         Dst(1,1,v)=inf;
         Dst(1,e,v)=mindist;
         F(1,e,v)=k;
         
         if Dst(1,e,v)<mindstk
             mindstk=Dst(1,e,v);
             v1=v;
         end
     end
    
      B(1,e)=mindstk; %第一级的最小距离
      W(1,e)=v1; %保存第一级最优词序号
     if v1>0
     DF(1,e)=F(1,e,v1); % DF保存第一级最小路径测试序列对应的帧号
     else
     DF(1,e)=0; 
     end
   
end


% Start Phrase level Matching 
for l=2:L             %层循环
    
    for e=l+1:N   %测试模板帧
      mindstk=inf;
      v1=-1; %最优词索引
         for v=1:K       %所有的参考模板
            mindist=inf;
             k=-1;
          for b=2:e-1
             if e-b+1>=8&e-b+1<=40
             if D(b,e,v)+B(l-1,b-1)<mindist
                 mindist=D(b,e,v)+B(l-1,b-1);
                 k=b-1; %保存上一个结束点
             end
             end
          end
         Dst(l,e,v)=mindist;
         F(l,e,v)=k;
             
         if Dst(l,e,v)<mindstk
             mindstk=Dst(l,e,v);
             v1=v;
          end
         
         end
         
         
      B(l,e)=mindstk; %第l级的最小距离
      W(l,e)=v1; %保存第l级最优词序号
      if v1>0
      DF(l,e)=F(l,e,v1); % DF保存第l级最小路径测试序列对应的帧号
     else
     DF(l,e)=0; 
     end
         
    end
end

%Find Best Length 省略。。
Lr=7; %假设bset Length为7
eL=N;
words=[];
while Lr>0
     words=[W(Lr,eL) words];
     eL=DF(Lr,eL);
     Lr=Lr-1;
end
disp(words-1); %输出结果


用连续数字串:1344507.wav 做实验,识别输出的结果为:1   1     3     4     5     0     7

 

2012.12.18 修正的LevelBuilding 算法:

function [Pr,Br,Wr] = levelBuilding(hmms,O)
%   hmms:HMM模型集合
%   O:观测序列
% 返回值: Pr:最佳累积距离;Br:最佳累积距离对应的帧;Wr:最佳词序列

    T= size(O,1);	%语音帧数,观测序列长度
    K=length(hmms);%HMM模型个数
    L=7;  %最大层数,即词数
%At level l=1
%Initialization
      P=-inf(L,T,K);
      B=zeros(L,T,K);
      Pr=-inf(L,T);  %保存最优概率
      Br=zeros(L,T);
      Wr=zeros(L,T);
     delta=cell(1,K);
      fai=cell(1,K); %记录状态
      init=cell(1,K);
     trans=cell(1,K);
      %初始化
      for i=1:K
        hmm=hmms{i}.hmm; %第i个隐马尔可夫模型的状态数
       delta{i}=zeros(T,hmm.N); %第i个模型的token
        %初始化第i个模型的第一个状态的概率,转换为对数形式
       fai{i}= zeros(T,hmm.N);
       init{i}=hmm.init;    
       trans{i}=hmm.trans;
       ind1  = find(init{i}>0);
       ind0  = find(init{i}<=0);
       init{i}(ind0) = -inf;
       init{i}(ind1) = log(init{i}(ind1));
       %初始化第i个模型的的转移概率
      ind1 = find(trans{i}>0);
      ind0 = find(trans{i}<=0);
      trans{i}(ind0) = -inf;
      trans{i}(ind1) = log(trans{i}(ind1));
      end
     x = O(1,:);
     
   for k=1:K
      for i=1:hmms{k}.hmm.N %每个HMM的状态数
	  delta{k}(1,i) = init{k}(i) + log(mixture(hmms{k}.hmm.mix(i),x)); %初始化前向概率矩阵,初始状态概率乘以t=1时观测序列的输出概率
      end
   end
   
  delta1=delta; %保存初始值,以免迭代覆盖
  
for t=2:T %从第二个观测序列开始 
        
     for  k=1:K 
         for j = 1:hmms{k}.hmm.N  %对该模型的所有状态
	      [delta{k}(t,j), fai{k}(t,j)]= max(delta{k}(t-1,:) + trans{k}(:,j)');%找出t-1时刻所有状态最大的前向概率与转移的矩阵kk
	      x = O(t,:);
	      delta{k}(t,j) = delta{k}(t,j) + log(mixture(hmms{k}.hmm.mix(j),x)); %记录第k个词的最大距离
         end    
         P(1,t,k)=delta{k}(t,hmms{k}.hmm.N);
         B(1,t,k)=0; %保存帧号还是0??
     end
     [pm,q]=max(P(1,t,1:K));
      Pr(1,t)=pm;
      Br(1,t)=B(1,t,q);
      Wr(1,t)=q;
end
%%%%%%%%%%%%%%%%%%%%%%level=1 End%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%level=2 开始。。。。。
%Initialization
 delta2(1,1:4)=0;  belta(1,1:4)=0;
for l=2:L
   
    for t=2:T %从第二个观测序列开始 
     
        temp=-inf; wi=0;
        for k=1:K
            
            if trans{k}(1,1)+delta2(t-1,1)>temp
                temp=trans{k}(1,1)+delta2(t-1,1);
                wi=k;
            end
        end
             %[pb,ind]=max(trans{1:K}(1,1)+delta2(t-1,1));
             x=O(t,:);
             [va,ind]=max([Pr(l-1,t-1) temp]);
             delta2(t,1)=va+log(mixture(hmms{wi}.hmm.mix(1),x));
             if ind==1 
                 belta(t,1)=t-1;
             else
                 belta(t,1)=belta(t-1,1);
             end
             %%递归
             for k=1:K
                  for j = 1:hmms{k}.hmm.N  %对该模型的所有状态
                     
                  
                      [vm,vd]=max(delta2(t-1,:)+ trans{k}(:,j)');
                      x=O(t,:);
                     delta2(t,j)=vm+log(mixture(hmms{k}.hmm.mix(j),x));
                     belta(t,j)=belta(t-1,vd);
                  end  
                  
              P(l,t,k)=delta2(t,hmms{k}.hmm.N);
              B(l,t,k)=belta(t,hmms{k}.hmm.N); %保存帧号还是0??
             end   
             %%结束递归
    end
     [pm,q]=max(P(l,t,1:K));
      Pr(l,t)=pm;
      Br(l,t)=B(l,t,q);
      Wr(l,t)=q;
    
end

%  disp(delta2);

end


 

自然语言SEO:从关键词堆砌到语义意图建模的实战升级 自然语言处理(NLP)已深度重构搜索引擎排序逻辑,不再是内容修饰技巧,而是决定页面能否被精准识别与优先召回的技术基础设施。其核心原理在于语义理解——通过依存句法分析、实体共现建模与指代消解等机制,将文本转化为机器可推理的意图图谱。这一能力直接支撑搜索结果的相关性提升与用户意图满足度,广泛应用于SaaS营销、电商转化、知识付费等高价值场景。当前主流模型如BERT、RankBrain和MUM,正推动SEO从‘关键词匹配’迈向‘目标-路径-验证’三位一体的语义建模。本文聚焦Marketing领域真实案例,揭示如何 阅读详情

相关推荐

用摄影物理逻辑重构AI生图工作流

AI图像生成本质上是空间建模与光学计算过程,而非语义描述任务。其底层原理依赖三维坐标系重建、光影矢量解析和镜头参数映射等摄影工业标准。技术价值在于绕过模型黑箱,以可验证的物理参数(如三分构图坐标、5500K色温、35mm焦段)替代模糊形容词,显著提升生成结果的空间真实感与工程复现性。典型应用场景涵盖电商主图、电影概念设计、纪实人像及胶片风格渲染。本文聚焦将传统摄影思维转化为AI可执行的提示工程方法论,核心实践包括主体空间锚定、光路闭环描述与镜头参数绑定。

张 作强 BLOG 379

自校正RAG:构建生成中实时干预的可信问答系统

RAG(检索增强生成)作为当前主流的可信AI架构,其核心挑战在于检索与生成之间的语义断层和单向信任缺陷,导致幻觉、时间错位与主体漂移等典型问题。真正有效的解决方案并非后处理校验或简单重排,而是通过生成中置信度探针、上下文可信度热力图与动态重检触发器构成的三层反馈闭环,在LLM解码过程中实时感知逻辑断点与token级不确定性。该技术依托logits熵值监控、轻量规则+小模型融合评分、逻辑锚点提取等工程手段,实现零额外延迟的自我修正。适用于金融、医疗、法律等高可信要求场景,是突破传统RAG性能瓶颈的关键范式升级

cuyi7076的博客 498

粒子滤波小结

<br />今天就来说说我看懂了的粒子滤波(Particle Filter)部分。<br />我为啥要在看粒子滤波之前拼命学卡尔曼?因为,粒子滤波和Kalman的模型是一样的。无论是线性还是非线性,它俩的模型都是那个:<br />z_t=h(x_t, v_t);<br />x_t=f(x_(t-1),w_t);<br />虽然粒子滤波中,不太常提这个表达形式,因为大家都默认你懂了Kalman。因此,粒子滤波的关键不在这个模型,而在于一个假设:<br />P(x_t| z_t)不再是高斯分布了!<br />前

tudouniurou的专栏 2万+

科普:智能电话机器人语音识别技术

语音控制的基础就是语音识别技术,可以是特定人或者非特定人的。非特定人的应用更为广泛,对于用户而言不用训练,因此也更加方便。语音识别可以分为孤立词识别,连接词识别,以及大词汇量的连续词识别。对于智能机器人这类嵌入式应用而言,语音可以提供直接可靠的交互方式,语音识别技术的应用价值也就不言而喻。 一、 语音识别概述 语音识别技术最早可以追溯到20世纪50年代,是试图使机器能“听懂”人类语音的技术。按照目前主流的研究方法,连续语音识别和孤立词语音识别采用的声学模型一般不同。孤立词语音识别一般采用DTW动态时间规整算

AI_wx_3307623172的博客 794

Cesium中GLB模型加载

Cesium中GLB模型加载全解析:Primitive与Entities方法详解

m0_72030584的博客 3471

用Simulink复现Hopf振荡器:从数学公式到稳定极限环的保姆级仿真教程

本文详细介绍了如何在Simulink中实现Hopf振荡器,从数学原理到仿真建模的全过程。通过参数调试和波形分析,帮助读者掌握Hopf振荡器的核心特性及其在机器人控制等领域的应用。特别强调了自适应调节技巧,提升系统稳定性和鲁棒性。

weixin_29261711的博客 444

连接词识别

在论文“A Speaker-Independent, Syntax-Directed, Connected Word Recognition System Based on Hidden Markov Models and Level Building”中提到动态规划来解决HMM连接词识别问题,文中提到: 上面的一步已经实现,在第二层的动态规划中,有点迷惑了。。 详

紫禁城蜗牛的乐园 1051

YOLOv8中的C2f模块代码详解

在YOLOv8网络结构中,C2f模块(CSP Bottleneck with 2 Convolutions)是一个关键组件,用于实现跨阶段部分聚合

zzzyyy8的博客 3万+

HMM模型的Levelbuilding 算法,求改正

在论文“A Speaker-Independent, Syntax-Directed, Connected Word Recognition System Based on Hidden Markov Models and Level Building”中提到动态规划来解决HMM连接词识别问题,文中提到: 上面的一步已经实现,在第二层的动态规划中,有点迷惑了。。 详

xiaoding133的专栏【Stay hungry,Stay foolish】 1249

【Docker】从零构建达梦DM8轻量级服务镜像:实战与优化

本文详细介绍了从零开始构建达梦DM8轻量级Docker镜像的完整实战流程。通过分析传统安装方式的痛点,阐述了使用Docker封装数据库的优势,并重点讲解了如何利用静默安装、精简组件、多阶段构建等优化技巧,打造一个体积小巧、启动迅速、配置灵活的DM8服务镜像,助力实现开发、测试与部署的环境一致性与高效性。

ooo22的博客 518

手把手教你用vLLM在昇腾910B上部署Qwen3-Embedding-8B模型(保姆级避坑指南)

本文详细介绍了如何在昇腾910B芯片上使用vLLM推理引擎部署Qwen3-Embedding-8B模型的全流程,包括环境准备、vLLM-ascend定制化安装、模型获取与校验、环境变量配置、服务启动参数优化、性能压测及生产级部署建议。特别针对昇腾生态的开发者,提供了保姆级的避坑指南和实用技巧,帮助实现高效稳定的模型部署。

weixin_28726671的博客 463

特征学习“Building High-level Features Using Large Scale Unsupervised Learning”

摘要:GoogleBrain中特征学习的原理,通过使用未标记的图像学习人脸、猫脸high-level特征,得到检测器。文章使用大数据构建了一个9层的局部连接稀疏自编码网络(模型有1 billion个链接,数据有10 million 个200*200的图像)。使用模型并行化和异步SGD在1000个机器(16000核)上训练了3天,实验结果显示可以在未标记图像是否有人脸的情况下训练处一个人脸检测器。之前

cv_family_z的博客 3090

Linux与Windows双系统,安装完linux后无法通过grub进入Windows的解决方法

先装Windows 10,Windows可正常启动,再装Kali,Kali提示装grub后照装。然而装完后重启发现无Windows选项。

sakurashockwave的博客 6454

力扣472——连接词(字典树+DFS,字符串哈希+动态规划)

思路一、字典树+dfs 字典树可以理解为26叉树,每个位置为单词的一个字符,如果在单词此处结束,则bool型变量记录到此有结束。 例如,单词ab,abc,有树上记录有a->b->c的路径,并且在b、c出记录有结束标识,可以节省空间,加快查找前缀的速度。 在将数组 words 按长度排序之后,遍历数组,跳过空字符串,对于每个非空单词,判断该单词是不是连接词,如果是连接词则将该单词加入结果数组,如果不是连接词则将该单词加入字典树。(因为连接词能由其他单词构成,则能由连接词构成的单词必然能由构成连..

lllzzzhhh2589的记录 571

【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅰ——理论,实验拓扑和安装基于RemoteAPP的RDS

博客介绍了Windows Server中远程桌面服务的理论,实验拓扑以及基于RemoteAPP的RDS安装。博文介绍了如何在Windows Server上部署发布服务器。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6128

FFMPEG音视频开发: Linux下采集音频(alsa-lib库)、视频(V4L2框架)数据编码并实时推流到RTMP流媒体服务器,达到直播功能(推流)

一、环境介绍 操作系统: VM虚拟机运行的ubuntu18.04 FFMPEG版本: 4.4.2 摄像头: 罗技USB摄像头、电脑自带摄像头 声卡:电脑自带声卡 二、FFMPEG、X264的安装 参考这里:FFMPEG开发: Linux下采集摄像头数据录制成MP4视频保存到本: 地https://blog.youkuaiyun.com/xiaolong1126626497/article/d...

2989

472 连接词(动态规划-递推)

1. 问题描述: 给定一个 不含重复单词的字符串数组 words ,编写一个程序,返回words 中的所有 连接词 。 连接词 的定义为:一个字符串完全是由至少两个给定数组中的单词组成的。 示例 1: 输入:words = ["cat","cats","catsdogcats","dog","dogcatsdog","hippopotamuses","rat","ratcatdogcat"] 输出:["catsdogcats","dogcatsdog","ratcatdogcat"] 解释:"catsd.

二哈 330

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

谷歌论文阅读:Building High-level Features Using Large Scale Unsupervised Learning

使用大规模无监督的深度机器学习网络进行高级特征学习

立月尽黄昏的博客 1814

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NLTK学习笔记(四):自然语言处理的一些算法研究

自然语言处理中算法设计有两大部分:分而治之 和 转化 思想。一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化。前者的例子:归并排序;后者的例子:判断相邻元素是否相同(与排序)。 这次总结的自然语言中常用的一些基本算法,算是入个门了。 递归 使用递归速度上会受影响,但是便于理解算法深层嵌套对象。而一些函数式编程语言会将尾递归优化为迭代。 如果要计算n个词有多少种组合方式?按照...

weixin_34023982的博客 492

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

472.连接词

给定一个不含重复单词的列表,编写一个程序,返回给定单词列表中所有的连接词。 连接词的定义为:一个字符串完全是由至少两个给定数组中的单词组成的。 示例: 输入: ["cat","cats","catsdogcats","dog","dogcatsdog","hippopotamuses","rat","ratcatdogcat"] 输出: [

zrh_优快云的博客 821

1.1联结词真值运算

1.1联结词真值运算Time Limit: 1000 msMemory Limit: 65536 KiBProblem Description已知命题变元p和q的真值,求它们的合取式(p∧q)、析取式(p∨q)、蕴涵式(p→q)、等值式(A&lt;=&gt;B)、与非式(p↑q)、或非式(p↓q)的真值。Input多组输入,每组测试数据输入两个0或1的整数p和q,1表示真值为真,0表示真值为假Ou...

ACM 1312

论文中的连词

顺序是这样的。。。。  首先、其次、再次、从次、最后。。。  如后还要加的话  就是。。。  首先、其次、再次、从此、最后、另外、除此之外、值得一提的是。。。。。...

Gussss的博客 7954

机器智能-高频问题:DPLL算法&walksat算法

DPLL算法 DPLL算法是一种判断逻辑语句(CNF)是否可满足的算法。 实际上也是枚举算法,即改进的真值表枚举算法。首先找到纯符号、递归,再找单元子句、递归,最后去除了纯符号和单元子句后的语句进行枚举。思想是只要部分符号有效就可以推导出语句有真值,而不需要讨论全部符号。 比枚举算法的改进 ①、及早终止算法: 如果其中任意一个文字为真则一个子句是真;如果搜索的文字都为假则一个子句为假 ②、纯符号启...

君陌的博客 6547

语音特征参数MFCC计算的详细过程

注:老早之前就在看语音信号处理方面的知识,每当过了很久都会忘记,由于之前对语音特征MFCC提取的流程还是非常清楚的,但是对于一些细节以及一些原理一些的东西还是不是很明白,通过这次的总结,我终于明白的其中的技术细节以及设计方法,包括滤波器的设计,以及参数的具体意义,希望这个总结能给自己增加更多的印象,课本上好像对各个三角滤波器的设计没有过多的讲解,也没讲流程,希望这里的总结能有所帮助。 一、MFC

xiaoding133的专栏【Stay hungry,Stay foolish】 5万+

群延迟函数(group delay function)&群延迟滤波器

最近看了许多介绍Group delay function的论文,文章中大篇幅提到Group delay,group delay of digital filters,对这个方面的知识好像还挺有用的,所以想把它记录下来。然后总结下计算Group delay function的步骤。            假设有N个样本的脉冲响应为h(n)的数字滤波器,n为时间序列标号,对该数字滤波器进行离散时间傅

xiaoding133的专栏【Stay hungry,Stay foolish】 3万+
上一篇: matlab 进行PCA分析
下一篇: 信号处理与语音识别专家Lawrence R. Rabiner 介绍
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值