当前位置: 首页 > news >正文

【专用名词的离线语音识别在2024年底的解决方法调查-会议签到的补充】

语音识别在会议点名中的使用

    • 概要
    • 解决问题的过程
      • 不行的一些参考
      • 可以的一个package
      • 自定义词语的拼音转换
      • 遗留的问题
    • 小结

概要

提示:这里可以添加技术概要
这里只实现一个方面,每个android会议设备都可通过语音发送参会者姓名,自动转换成文字添加到人员名单.
语音采集和发送,是通路.
识别是核心.目前的模型和模块都是针对通用语言的,在这里不合适,我只要适合的名字,并且容易添加新的名字.
最后能接受自主调节.
听得懂指令. 看似需要AI支持了,难搞.

解决问题的过程

不行的一些参考

. https://alphacephei.com/vosk/lm
这是vosk的调整,明显还不支持中文

https://github.com/Uberi/speech_recognition/blob/master/reference/pocketsphinx.rst#installing-other-languages
这是pocketsphinx在speechrecognition中的表示,看似可以调整,但是难度有点太大了.
如同vosp中说的端到端,复杂程度大,但是通用性好.可是我只想加个词典,居然这么难的吗.

可以的一个package

`提示: pocketsphinx 5.0.3
这里 pypy:https://pypi.org/project/SpeechRecognition/
原理就用里面的离线库 spinx
准备中文库
这里的中文库从:
https://jaist.dl.sourceforge.net/project/cmusphinx/Acoustic%20and%20Language%20Models/Mandarin/cmusphinx-zh-cn-5.2.tar.gz?viasf=1
来源
https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/

它可以搭配 /SpeechRecognition/ 中的sphinx使用,然而 pocketsphinx却不行.

然后借鉴这里https://blog.csdn.net/Zbreakzhong/article/details/109127837
对中文单词进行编码

将cmusphinx-zh-cn-5.2.tar.解压后放入
,\Lib\site-packages\speech_recognition\pocketsphinx-data\zh-CN
仿照 en-US,为个别文件和文件夹命名.
然后就可以更改根目录下dic文件
演示

段*栓 d uan4 h ong2 sh uan1
石*阳 sh ix2 x iang4  ii ang2
张*嘉 zh ang1 s ai4 j ia1

准备好后

 import speech_recognition as sr# 创建Recognizer对象
r = sr.Recognizer()# 从音频文件中识别语音
def recognize_speech_from_file(file_path):with sr.AudioFile(file_path) as source:audio = r.record(source)  # 读取音频文件try:text = r.recognize_sphinx(audio, language='zh-CN')  # 使用Google语音识别引擎识别语音return textexcept sr.UnknownValueError:print("无法识别音频")except sr.RequestError as e:print("无法连接到Google语音识别服务:{0}".format(e))# 从麦克风实时录制并识别语音
def recognize_speech_from_microphone():with sr.Microphone() as source:print("请开始说话...")audio = r.listen(source)  # 实时录制音频try:text = r.recognize_sphinx(audio, language='zh-CN')  # 使用Google语音识别引擎识别语音return textexcept sr.UnknownValueError:print("无法识别音频")except sr.RequestError as e:print("无法连接到Google语音识别服务:{0}".format(e))# 调用函数进行语音识别
file_text = recognize_speech_from_file('audio.wav')
print("音频文件识别结果:", file_text)mic_text = recognize_speech_from_microphone()
print("麦克风实时识别结果:", mic_text)

自定义词语的拼音转换

使用pypinyin,由于一开始想,也许可以听得懂拼音.只是字错.所以想用听来的字,转成拼音, 比对字典文字的拼音. 写了一上午后发现,拼音是听不懂的. 错误率的一半以上…但是这部分代码,可以借给生成 spinx的单词注音用.
目前来看 y, ii, w,uu, shi 是shix,需要一些这样的调节,其他都是一样的.另外取消了多音字的处理.

from pypinyin import pinyin, lazy_pinyin, Style
def name2py(name,duoyin=True):return  pinyin(name, heteronym=duoyin,style=Style.TONE3)
#names内容一行一个人名,转换成, dic的注音版
def getnames():
with open("names.txt", 'r',encoding ='utf-8') as nf:lines=[ln.strip() for ln in nf.readlines()]return lines
pinyin('中乐', heteronym=True,style=Style.TONE3)    nms=getnames()
pys=list(map(name2py,nms))#test=[['gao1', 'gao4'], ['lei2', 'lei4']]
#tar=[['gao1'],['lei2']]
#r=find1py(tar,test) 
def find1py(onepy,oneitem):if len(onepy)!=len(oneitem):return Falsefor (i,j) in zip(onepy,oneitem):if i[0][-1].isdigit():i=i[0][:-1]print(j)print("i in "+i)if ','.join(j).find(i)==-1:return Falsereturn True         def godo(name,pys=pys,nms=nms):target = name2py(name,duoyin=False)for i,item in  enumerate(pys):print(item)if  find1py(target,item):return nms[i]return None
def writedic():with open('zh.dic.txt','w') as wf:for i in nms[:30]:final=pinyin(i, heteronym=False,style=Style.INITIALS)rt=name2py(i,False)toget=i+" "for init ,r in zip(final,rt):r=r[0].replace("zhi","zhix").replace("chi","chix").replace("shi","shix")r= r.replace(init[0],'')r=r.replace('w','uu ').replace('y','ii ')toget+=fr"{init[0]} {r} "print (toget[:-1])#r=godo("含风",pys,nms)writedic() 

遗留的问题

忙音和部分语音会出现串位不知道为啥,有时候说一个人会出来两个
还有就是网络接口的调节, 接受语音提供反馈,vosp自身有这个功能. 目前用的没有.

小结

提示:这里可以添加总结
虽然已经结束了初步测试,但是还有性能和调优和网络化服务的需求.

相关文章:

【专用名词的离线语音识别在2024年底的解决方法调查-会议签到的补充】

语音识别在会议点名中的使用 概要解决问题的过程不行的一些参考可以的一个package自定义词语的拼音转换遗留的问题 小结 概要 提示:这里可以添加技术概要 这里只实现一个方面,每个android会议设备都可通过语音发送参会者姓名,自动转换成文字添加到人员名单. 语音采集…...

OS基础-

OS基础 内存管理 内核用户设备管理 设备框架I/O子系统网络多媒体 音频视频运维 控制台GUIdebug审计计算机组成 CPU ALUregister SPLRPCR0-R12CPSRcacheclockInterrupt Vector tableIVTRMMU/MPU 内存访问权限配置,支持多进程BUSMEMORYI/O单线程 特点:结构…...

《大型语言模型实战指南:应用实践与场景落地》一文详解大型语言模型的11种微调方法

导读:大型预训练模型是一种在大规模语料库上预先训练的深度学习模型,它们可以通过在大量无标注数据上进行训练来学习通用语言表示,并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大,微调和推理阶段的资源消耗也在增加。…...

嵌入式浏览器 -- Chromium VS Firefox

嵌入式浏览器概念 嵌入式浏览器是嵌入式系统中的核心组件之一,用于为设备提供网络访问能力和内容显示功能。与传统PC浏览器相比,嵌入式浏览器更加注重性能优化和资源效率,同时确保核心功能可用,如HTML渲染、JavaScript支持和多媒…...

权限大、数量多、破坏强、管理难......企业特权访问管理怎么管?

特权账号,通往企业数据大门的“钥匙”。 它权限大,具有高危命令或操作的执行权限; 破坏性强,操作可能影响他人使用或其他系统故障; 信息泄露风险大,操作可能获取别人或其他系统相关隐私信息;…...

UE5 第一人称示例代码阅读0 UEnhancedInputComponent

UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统,看了一下第一人称例子里,算是看明白了,但是感觉这东西使用起来有点绕,特此梳…...

如何在Linux下安装和配置Docker

文章目录 安装前的准备在Debian/Ubuntu上安装Docker添加Docker仓库安装Docker验证安装 在CentOS/RHEL上安装Docker安装必要的软件包设置Docker仓库安装Docker启动Docker服务 Docker的基本使用拉取一个镜像运行一个容器 配置Docker创建Docker目录使用非root用户运行Docker 结语 …...

apisix的原理及作用,跟spring cloud gateway有什么区别?

apache APISIX 是一个高性能、可扩展的开源 API 网关,它主要用于处理 API 请求、流量管理、安全控制和服务治理。APISIX 可以将复杂的服务架构中的不同服务通过统一的网关来进行管理和监控,为微服务架构提供了便捷的流量入口管理方式。 APISIX 的原理 …...

华为HarmonyOS实现实时语音识别转文本

场景介绍 将一段音频信息(短语音模式不超过60s,长语音模式不超过8h)转换为文本,音频信息可以为pcm音频文件或者实时语音。 开发步骤 在使用语音识别时,将实现语音识别相关的类添加至工程。 import { speechRecogni…...

DIY可视化-uniapp悬浮菜单支持拖动、吸附-代码生成器

在Uniapp中,悬浮菜单支持拖动和吸附功能,可以为用户带来更加灵活和便捷的操作体验。以下是对这两个功能的详细解释: 悬浮菜单支持拖动 提高用户体验:用户可以根据自己的需要,将悬浮菜单拖动到屏幕上的任意位置&#x…...

HTTP cookie 与 session

一.Cookie 定义: 是服务器发送到用户浏览器并保存在浏览器上的一小块数据, 它会在浏览器之后向同一服务器再次发起请求时被携带并发送到服务器上。 通常, 它用于告知服务端两个请求是否来自同一浏览器, 如保持用户的登录状态、 …...

智慧停车场导航系统架构及反向寻车系统解决方案

一、系统概述: 随着当前室内定位导航技术在大型公共场所如政务中心、商业综合体、车站中的应用越来越多,人们对智慧停车场的需求也日益凸显出来,并且智慧停车场对大型公共场所智慧化的整体建设起到重要作用。如何更有效提高停车效率&#xf…...

【小程序上传图片封装2024,支持多图,带进度,上传头像】

import config from ./config;// 支持多图,显示进度 export function uploadImages(count 1, sourceType, onLoading null, showProgress false, fileKey file) {return new Promise((resolve, reject) > {wx.chooseMedia({count: count, // 可以选择的图片数…...

[A-14]ARMv8/ARMv9-Memory-内存模型的类型(Device Normal)

ver0.1 [看前序文章有惊喜。] 前言 前面花了很大的精力把ARM构建的VMSA中的几个核心的议题给大家做了介绍,相信大家已经能够理解并掌握ARM的内存子系统的工作原理大致框架。接下来我们会规划一些文章,对ARM内存子系统的一些细节做一下介绍,使ARM的内存子系统更加的丰满。本…...

驾校管理系统|基于java和小程序的驾校管理系统设计与实现(源码+数据库+文档)

驾校管理系统平台 目录 基于java和小程序的驾校管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#…...

@Mapper使用中遇到的问题解法汇总

最近终于有时间写点代码相关的文章了,工作真的太忙了,果然又要测试又要开发的人最🐂🐴。 1.查询数据库有数据,但是代码中写select语句的时候查出为null Select("SELECT * FROM xx_manager order by id limit 1&q…...

深度学习:YOLO V3 网络架构解析

引言 YOLO V3(You Only Look Once Version 3)是YOLO系列算法的第三个版本,相比之前的版本,它在多个方面进行了优化和改进,不仅提升了检测精度,还保持了较快的检测速度。本文将详细介绍YOLO V3的主要改进以…...

SpringCloudAlibaba-Sentinel-熔断与限流

版本说明 <spring.boot.version>3.2.0</spring.boot.version> <spring.cloud.version>2023.0.0</spring.cloud.version> <spring.cloud.alibaba.version>2023.0.1.2</spring.cloud.alibaba.version>是什么 能干嘛 面试题 服务雪崩 安装使…...

mysql中的mvcc理解

是什么&#xff1a;MVCC指的是在读已提交、可重复读这两种隔离级别下的事务在执行普通的select操作时&#xff0c;访问记录的版本链的过程&#xff0c;可以使不同事务的读写操作并发执行&#xff0c;提高性能。 MVCC 隐藏字段 undo log 版本链 ReadView 1.隐藏字段&#xf…...

ETF申购赎回指南:详解注意事项与低费率券商推荐!

​ETF 申购&赎回 ETF申购赎回是个啥业务&#xff1f; 01 ETF申购、赎回是一种交易委托方式&#xff0c;指投资者通过申购方式(买入方向)获得ETF份额&#xff0c;通过赎回的方式&#xff08;卖出方向&#xff09;换掉/卖出ETF份额。ETF申购&#xff0c;通常是通过一篮子成…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...