教你怎样用Python进行语音识别!非常精准!

Python 语音识别 Python语音识别文本转换为语音   语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相 应的文字和文字转换为语音。 文本转换为语音 使用 pyttsx  使用名为 pyttsx 的 python 包,你可以将文本转换为语音。直接使用 pip 就可以进行安装, 命令如下: pip install pyttsx3 若下载缓慢推荐您使用第三方通道下载 pip install -i https://mirrors.aliyun.com/pypi/simple pyttsx3 【 阅读详情

网上找到一些例子,有一些成熟的模型,可以将语音转成文字。例如Cloud Speech API,但是需要你使用google云平台的前提。

speech recognition

对于python这一非常成熟的胶水语言,在网上找一些现成的工具包真的不是一个太难的问题。在GitHub上就发现了这样一个神奇的包:speech recognition

它可以支持实时翻译,当然前提是需要在机器上安装有关麦克风的依赖包;还可以支持将语音文件中的文字直接提取出来。通过speech recognition可以调用多种平台上的模型,比如google API,CMU sphinx,Microsoft Bing Speech,IBM Speech to Text,Wit.ai 等

离线转换

对于国内的网络环境,无法用google API来将语音数据转换成文本文件,因为在调用这个包的时候,需要连接到google。当然,你可以租用一个国外的VPS来做这件事情。

这里讲一下如何在不联网的情况下,依然可以通过python来将语音文件转换成文字。这里用到的包为sphinx,sphinx是由美国卡内基梅隆大学开发的大词汇量、非特定人、连续英语语音识别系统。

安装 sphinx

我本人所用的环境为ubuntu。

 

 

imyin@develop:~/Downloads/phinx$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 16.04.3 LTS 
Release: 16.04 
Codename: xenial 

在安装sphinx之前需要安装一些软件包

sudo apt-get install gcc automake autoconf libtool bison swig python-dev libpulse-dev 

之后可以在相关网站上下载sphinxbase安装包,当然也可以直接clone github上的包

下载完之后进行解压

tar zxpf sphinxbase-5prealpha.tar.gz 

修改文件名

mv sphinxbase-5prealpha sphinxbase 
ls sphinxbase 
 
AUTHORS doc indent.sh Makefile.am README.md src win32 
autogen.sh .git LICENSE NEWS sphinxbase.pc.in swig 
configure.ac include m4 README sphinxbase.sln test 

现在我们应该运行autogen.sh来生成Makefiles和其他一些脚本以备后续的编译和安装。

./autogen.sh 

下面开始源码安装

make && sudo make install 

执行完以上命令之后,如果没有出现什么报错信息,就说明已经安装成功了,但是此时你的命令并不可以生效,在运行命令时会出现这样的错误。

imyin@develop:~/Downloads/phinx/sphinxbase$ sphinx_lm_convert  
sphinx_lm_convert: error while loading shared libraries: libsphinxbase.so.3: cannot open shared object file: No such file or directory 

还需要让系统加载目录/usr/local/lib,为了让系统每次启动时都可以自动加载,可以修改系统配置文件ld.so.conf

sudo echo "/usr/local/lib" >> /etc/ld.so.conf 
sudo ldconfig 

这时候,就可以通过sphinx_lm_convert命令将模型DMP文件转成bin文件

sphinx_lm_convert -i zh_broadcastnews_64000_utf8.DMP -o zh_CN.lm.bin 

上面这行代码是将中文的模型DMP文件转成了bin文件。在安装完sphinx后默认只支持英文,在存放模型的路径下只有一个文件名为en-US,所以这里需要添加一个处理中文的模型,相关文件可以在这个网址中下载。

在python中使用sphinx

想要在python中使用sphinx的话,需要安装一些依赖包。

pip install pydub -U # 负责将MP3文件转换为 wav 文件 
pip install SpeechRecognition -U # 负责将语音转换成文字 
sudo apt -qq install build-essential swig libpulse-dev # 为后面安装 pocketsphinx 做准备 
pip install -U pocketsphinx # 为使用 sphinx  
sudo apt-get install libav-tools # 为解决在调用 pydub 时出现的 warning :RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning) 

这时候,就可以启动ipython来试试效果了。

file_path = '/home/imyin/Downloads/phinx/test_data' 
r = sr.Recognizer() 
hello_zh = sr.AudioFile(os.path.join(file_path, 'test.wav')) 
with hello_zh as source: 
 audio = r.record(source) 
 
r.recognize_sphinx(audio, language='zh_CN') 
 
'今天 天气 很' 

可以看出,这个语音识别器已经生效了。但是我说的是“今天天气好热啊”。

看来sphinx中的模型并非很准呐,而且这只是一个短句子。我们接下来看看长句子的效果,我录了村上春树的《当我谈跑步时我谈些什么》中的一段内容。

那一年的七月里,我去了一趟希腊,要独自从雅典跑到马拉松,将那条原始的马拉松路线——马拉松至雅典——逆向跑上一趟。为什么要逆向跑呢?因为清晨便从雅典市中心出发,在道路开始拥堵、空气被污染之前跑出市区,一路直奔马拉松的话,道路的交通量远远少得多,跑起来比较舒适。这不是正式的比赛,自己一个人随意去跑,当然不能指望有什么交通管制。

hello_zh = sr.AudioFile(os.path.join(file_path, 'test2.wav')) 
with hello_zh as source: 
 audio = r.record(source) 
 
r.recognize_sphinx(audio, language='zh_CN') 
 
'南 音 扬 的 只有 领 过 球 的 立场 是 希望 让 猪只 处理 垃圾 土木工程 上 打球 运动 充满 温情 能 成功 吗 而 中止 了 对 印尼 商报 称 他 不是 没有 立场 谈 那 一 枚 其中 春天 从 雅典 市中心 出发 寸 厂 都 可 成功 突破 寻求 对 於 能 提升 统筹 署 取缔 一路 直奔 马拉松 和 阿 惹 山 活动 等 二十 个 队 中 重申 这 不是 正常 的 比赛 自己 一个人 却 一直到 当然 不能 说明 什么 这种 共识' 

呃,看到结果,我觉得可以用一个来形容:差劲。两个字来形容:太差劲!

当然,这个模型只是我直接从网上下载下来的。训练它时所用到的语料不会那么齐全,所以在测试时难免会出现不准确的情况。要想让模型更加准确,需要自己在利用sphnix继续训练模型。

相关办法在其官网上可以找到,也有相应的教程。感兴趣的朋友可以自行研究。

Q: Why my accuracy is poor  
Speech recognition accuracy is not always great. To test speech recognition you need to run recognition on prerecorded reference database to see what happens and optimize parameters.  
You do not need to play with unknown values, the first thing you should do is to collect a database of test samples and measure the recognition accuracy. You need to dump speech utterances into wav files, write the reference text file and use decoder to decode it. Then calculate WER using the word_align.pl tool from Sphinxtrain. Test database size depends on the accuracy but usually it’s enough to have 10 minutes of transcribed audio to test recognizer accuracy reliably. The process is described in tutorialtuning. 

文中提到的教程网址是https://cmusphinx.github.io/wiki/tutorialtuning/

Google API

利用google API来处理语音识别则相当准确,不过需要连接google,以下是我在VPS中执行的一段代码,可以看出,它将我的录音精准地翻译成了文字。

但是如果录音文件较大的话,会运行时间很长,并且会返回一个超时的错误,这很是让我苦恼。

不过幸运的是,speech_recognition支持将语音文件进行截取处理。例如,我可以只处理语音文件中的前15秒钟的内容。

with test as source: 
 audio = r.record(source, duration=15) 
r.recognize_google(audio, language='zh-CN') 
'那一年的7月里我去了一趟希腊有独自从雅典跑到马拉松江哪条原始的马拉松路线马拉松直雅典一想跑上一趟' 

从上面的结果看,简直比sphnix处理的效果好太多了。

通过看帮助文档发现speech_recognition不仅可以截取前面的录音,还可以截取中间的。

In [18]: r.record? 
Signature: r.record(source, duration=None, offset=None) 
Docstring: 
Records up to ``duration`` seconds of audio from ``source`` (an ``AudioSource`` instance) starting at ``offset`` (or at the beginning if not specified) into an ``AudioData`` instance, which it returns. 
 
If ``duration`` is not specified, then it will record until there is no more audio input. 

例如我想处理5秒至20秒之间的内容。

with test as source: 
 audio = r.record(source, offset=5, duration=15) 
r.recognize_google(audio, language='zh-CN') 
 
'要独自从雅典跑到马拉松江哪条原始的马拉松路线马拉松直雅典一项跑上一趟为什么要一想到呢因为星辰变从雅典市中心出发'

 

使用Python进行自动语音识别 在本文中,探讨了如何使用Python和Hugging Face Transformers库执行自动语音识别(ASR)。说明了如何加载预训练的ASR模型并使用它来识别音频文件中的语音。同时提供了一个演示脚本,方便用户在自己的音频文件上测试该库。借助Hugging Face Transformers的帮助,ASR已经变得更加易于使用,无论是对于开发人员还是研究人员。现代ASR模型由于其深度学习架构和在大规模数据集上的训练,因此高度先进和准确。 阅读详情

相关推荐

Python语音识别教程:大学生实现语音识别技能!

首先,我们需要安装Python的语音识别库。在Python中,有多个流行的语音识别库可供选择,例如SpeechRecognition和pyAudio等。我们使用SpeechRecognition库来实现语音识别功能,并调用Google的语音识别API来识别音频。在本教程中,我们将介绍如何使用Python实现语音识别技术。语音识别是一项强大的技术,可以将人类语音转换为文本形式,为我们提供更多的交互方式和便利性。在上述代码中,我们使用了Google的语音识别API来识别音频。如果识别成功,将打印出识别结果;

BinzTcl的博客 479

语音识别实战(python代码)(一)

本文主要从概念上图文论述了语音识别的起源与发展、语音识别的基本原理、语音识别过程、语音识别的近期发展。代码上分析了Python 语音识别所用到的技术,从 (1)、文本转换为语音(2)、文本转存为语音文件wav两个方面实例操作了语音识别的技术实现方式,并提供了完整源代码供参考。

逆境清醒的博客 3万+

Python离线语音识别高准确率方案分析及代码实现

Python离线语音识别多种方案代码实现及实测对比,其中最准确的识别率高达99%

唯有热爱 可抵万难 3148

使用python实现语音识别

语音识别技术,也被称为自动语音识别,目标是以电脑自动将以人类的语音内容转换为相应的文字和文字转换为语音。

白帽阿叁的博客 7585

Whisper使AI人工智能语音识别更精准可靠

本文旨在深入解析Whisper语音识别系统的核心技术原理、架构设计和实现细节。我们将探讨Whisper如何利用大规模弱监督训练和Transformer架构实现前所未有的语音识别准确率,特别是在噪声环境、口音变化和专业术语识别等挑战性场景中的表现。本文首先介绍Whisper的基本概念和技术背景,然后深入分析其核心架构和算法原理。接着我们将探讨数学模型和训练方法,提供实际代码示例,并讨论应用场景和优化策略。最后,我们将展望Whisper技术的未来发展方向和潜在挑战。Whisper。

AI天才研究院 996

Python与百度语音识别API集成实战

随着智能语音技术的飞速发展,百度语音识别API作为行业中的佼佼者,为开发者提供了丰富且强大的语音处理能力。无论是简单的语音转文本应用,还是复杂的多轮对话系统,百度语音识别API都能提供高质量的识别服务。云服务API(Application Programming Interface)是一种软件中间件,它允许不同平台或服务之间进行通信与数据交换。API通常通过HTTP请求在客户端(如Web应用、移动应用或桌面应用)和服务器端之间传递数据。

weixin_31938351的博客 1309

【亲测免费】 推荐文章: Python实现的WER计算工具 —— 精准评估语音识别准确率

推荐文章: Python实现的WER计算工具 —— 精准评估语音识别准确率 在当今日益发展的智能语音领域,衡量语音识别系统性能的准确性成为了关键技术之一。今天,我们为您推荐一个开源神器——基于Python3.7编写的Word Error Rate (WER) 计算工具,为您的语音识别项目提供精确的评价标准。 项目介绍 在这个高速发展的时代,语音识别技术已经渗透到生活的各个角落,从智能家居到车载系...

gitblog_00574的博客 1131

基于python的中文语音识别系统.zip

基于python的中文语音识别系统 # 基于深度学习的中文语音识别系统 ### 基于python的中文语音识别系统. 包含声学模型和语言模型两个部分组成,两个模型都是基于神经网络。 - 声学模型 - `acoustic_model`文件夹下 - 该项目实现了GRU-CTC中文语音识别声音模型,所有代码都在`gru_ctc_am.py`中,包括: - 增加了基于科大讯飞DFCNN的CNN-CTC结构的中文语音识别模型`cnn_ctc_am.py`,与GRU相比,对网络结构进行了稍加改造。 - 完全使用DFCNN框架搭建声学模型,稍加改动,将部分卷积层改为inception,使用时频图作为输入,`cnn_with_fbank.py`。 - 新增使用pluse版数据集的模型,`cnn_with_full.py`,建议直接训练这个模型。 - 语言模型 - `language_model`文件夹下 - 新增基于CBHG结构的语言模型`language_model\CBHG_lm.py`,该模型之前用于谷歌声音合成,移植到该项目中作为基于神经网络的语言模

Python 语音识别系列-实战学习-语音识别特征提取

语音识别特征提取是语音处理中的一个重要环节,其主要任务是将连续的时域语音信号转换为连续的特征向量,以便于后续的语音识别和语音处理任务。在特征提取阶段,这些特征向量能够捕捉到语音信号中的关键信息,如音调、音色和音节等。时域特征提取:包括自相关函数、方差、峰值等。频域特征提取:如傅里叶变换、快速傅里叶变换、波束傅里叶变换等。时频域特征提取:包括短时傅里叶变换、波形分解、时频图等。高级特征提取:涉及语言模型、语音模型、语音合成等。在具体实践中,语音特征提取的方法和技梅尔频率倒谱系数 (MFCC)

weixin_44733966的博客 4869

实战复盘:一次绕过WAF的EDUSRC SQL注入漏洞挖掘

本文详细复盘了一次针对教育行业网站的SQL注入漏洞挖掘实战。通过手动信息收集发现可疑点,并利用‘+’号替换空格等技巧,成功绕过WAF(Web应用防火墙)的拦截。文章逐步演示了从判断注入点到手工获取数据结构、最终解密进入后台的完整过程,并总结了手工测试的优势及高级绕过思路,强调了在EDUSRC等授权范围内进行安全测试的重要性。

weixin_28622215的博客 191

用Python+PyTorch实现DQN无人机避障:从环境搭建到实战训练(附完整代码)

本文详细介绍了如何使用Python和PyTorch框架,基于深度强化学习中的DQN算法,实现一个无人机自主避障系统。内容涵盖从自定义环境搭建、DQN智能体核心算法实现,到完整的训练流程与超参数调优,并提供了可视化演示与进阶优化方向,为开发者提供了从理论到实践的完整指南。

kubernetes8ctl的博客 638

‌WhisperX进阶:Python实现语音识别的精准时间戳与说话者分离

WhisperX 是一个基于 OpenAI Whisper 的扩展工具,它增强了语音识别功能,特别是添加了精准时间戳(精确到毫秒级的语音片段定位)和说话者分离(区分不同说话人的声音)。说话者分离(diarization)使用 pyannote.audio 模型,将识别出的语音段分配给不同说话人(如 "SPEAKER_00"、"SPEAKER_01")。首先,确保 Python 环境(建议 Python 3.8+),并安装必要的库。以下是一个完整的 Python 脚本,整合了所有步骤。

llskdhxjhsd的博客 992

esp8266步进电机驱动控制

blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器) Arduino uno的板子的程序 esp8266板子接入到Arduino uno的控制引脚上的5,6,7 esp8266程序 //****库***** #define BLINKER_WIFI //官方wifi协议库 #define BLINKER_PRINT Serial //串口协议库 #include <Blinker.h&gt

perseverance51博客 2853

语音识别c语言实现

广告关闭2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相应的文字。 应用包括语音拨号、语音导航、室内设备控制、语音文档检索、简单的听写数据录入等。 一、功能概述实现将语音转换为文字,调取第3方接口。 比如百度ai,图灵机器人,得到想要的结果。 二、软件环境...

q6q6q的专栏 5089

从零开始讲DDR(5)——读懂Datasheet

对于开发人员来说,需要根据实际场景和使用的需要,使用不同厂家,不同型号的DDR,虽然原理上大同小异,但是还是有一些细节上的需要注意的地方,接触一个新的DDR芯片,首先就是需要找到对应的datasheet,而能都读懂datasheet,也是一个硬件工程师的必备技能。

apple_53311083的博客 5217

有手就行的CNVD证书获取

知己知彼百战不殆。要想成功挖掘CNVD漏洞并获得证书,第一步就是深入了解CNVD的漏洞发放规则和评分标准。CNVD(国家信息安全漏洞共享平台)对漏洞的评级主要基于漏洞的危害程度、影响范围以及利用难度。此外,CNVD倾向于收录那些影响国内重要信息系统或民生领域的漏洞,因此在目标选择上可以优先考虑政府、教育、医疗、金融等行业的系统。同时,提交漏洞时需要提供详细的漏洞描述、复现步骤和修复建议,确保报告内容清晰完整,以提高审核通过率。

iSee857的博客 2442

google 语音识别 VS 百度语音识别

google [优点] ).很牛逼,实时解析这么精准,了不起 ).有歧义的语句,复杂的语句,自动纠正能力很强,哪怕发音差(普通话差)也能识别 ).语音识别能力:丧心病狂 ).完全免费的: speechTexter [缺点] ).不能自动断句,查了官网说明,只支持英文,不支持中文(不能自动加标点符号) 百度 [优点] ).非常不错,翻译的很好 ).免费版本,(收费版本,更精准) [缺点]...

大数据技术分享 2975

机械式激光雷达实现原理以及特性总结

本文介绍了机械式激光雷达的技术原理和核心特性。该技术通过机械旋转结构实现360°三维扫描,采用飞行时间法测距并生成点云数据。核心优势包括全向扫描、长距高精度和成熟度高,但存在体积大、成本高、可靠性受限等局限。典型应用于自动驾驶测试车、测绘建模等领域。与固态激光雷达相比,机械式在视场角和探测距离方面有优势,但在体积、成本和可靠性方面处于劣势。该技术目前主要应用于对成本不敏感的专业场景。

start_up_go的博客 262

揭秘Whisper语音识别:从声音波形到精准文本的AI魔法

Whisper是一个由OpenAI开发的强大语音识别和语音合成JavaScript库,它能将声音波形精准转换为文本,为网页应用提供简单易用的语音交互能力。无论是语音转文字还是文字转语音,Whisper都能通过其简洁的API实现高效处理,让开发者轻松构建语音交互功能。 ## 🚀 快速上手:5分钟安装Whisper 要开始使用Whisper,只需简单几步即可完成安装: 首先安装核心库: ```

gitblog_00204的博客 1211

第4章 部署负载均衡 Keepalived + HAProxy

本章在所有 Master 节点部署 Keepalived + HAProxy,为 kube-apiserver 提供高可用入口。Keepalived 实现 VIP(192.168.3.59)漂移,HAProxy 轮询转发请求至三个 Master 的 6443 端口(监听 6444 避免冲突)。健康检查脚本连续 5 次失败则停止 Keepalived,触发 VIP 自动切换。本章还包含配置详解、日常运维和问题排查。

幸福街--linux技术分享 120

华为昇腾开发——多模型资源管理(C++)

在使用Ascend ACL(Ascend Computing Language)的ACLLite库进行多模型推理时,合理的资源管理至关重要。

如果想成为中心,那么就到中心去吧。 574

中文语音识别终于有救了!精准又快速的国产模型

本文介绍了如何在星图GPU平台上自动化部署SenseVoiceSmall 多语言语音理解模型 (富文本/情感识别版) 镜像,实现高精度中文语音转写与实时情感识别。该镜像支持会议录音分析场景,可秒级输出带情绪标签(如[开心][掌声])和事件标记的富文本结果,显著提升会议纪要生成与服务质检效率。

weixin_42596011的博客 192

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

‌Python+WhisperX:医疗语音识别的精准与高效实践

通过Python+WhisperX的组合,医疗机构可构建低成本、高可用的智能语音基础设施,将医护人员从文书工作中解放,回归诊疗本质。(基于OpenAI Whisper的优化框架)结合Python生态,为医疗场景提供了高精度、低延迟的解决方案。:部署前需进行医疗伦理审查,确保患者知情同意,并对敏感信息进行$ \text{脱敏处理} $。在医疗领域,语音识别技术能显著提升诊疗效率,而。

jsgdfgxjsgdjxc的博客 526

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

语音识别精准化革命:FunASR热词功能实战指南

在语音识别技术快速发展的今天,专业术语识别准确率已成为衡量系统性能的关键指标。FunASR作为领先的开源语音识别工具包,其热词优化功能通过智能词汇表技术,将专业术语识别准确率提升至全新高度。无论是医疗诊断中的"冠状动脉粥样硬化",还是金融交易中的"去中心化金融",都能实现精准无误的识别效果。 ## 热词技术核心原理深度剖析 FunASR的热词优化基于先进的WFST(加权有限状态转换器)架构,通

gitblog_00461的博客 835

5个步骤掌握whisperX:从环境搭建到精准语音识别

在语音识别领域,你是否曾面临识别准确率低、时间戳模糊、多说话人难以区分的问题?whisperX作为基于OpenAI Whisper的增强工具,通过融合强制音素对齐(Phoneme-Based ASR)和语音活动检测(VAD)技术,解决了传统工具在时间戳精度和多说话人识别上的痛点。本文将通过5个清晰步骤,带你从环境搭建到实现精准语音识别,让你轻松掌握这一强大工具的核心功能与应用方法。 ## 一、工

gitblog_00453的博客 437

语音识别前必看!FSMN-VAD让音频切分更精准

本文介绍了如何在星图GPU平台上自动化部署FSMN-VAD 离线语音端点检测控制台镜像,实现高精度中文语音切分。该镜像专为语音识别前预处理设计,可自动识别并裁剪音频中的真实说话片段,广泛应用于客服通话分析、会议录音摘要及语音唤醒调试等场景,显著提升ASR准确率与处理效率。

weixin_42518334的博客 313
上一篇: 用Python分析告诉你:一个城市麦当劳的数量和什么有关!
下一篇: Python plotly制作接口响应耗时的时间序列表!
PythonJavaPHP
博客等级 码龄7年 116粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值