京公网安备 11010802034615号
经营许可证编号:京B2-20210330
网上找到的有关python语音识别的例子,有一些成熟的模型,可以进行python语音识别,将语音转成文字。例如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 -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 16.04.3 LTSRelease: 16.04Codename: 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 sphinxbasels sphinxbaseAUTHORS doc indent.sh Makefile.am README.md src win32autogen.sh .git LICENSE NEWS sphinxbase.pc.in swigconfigure.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.confsudo 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 poorSpeech 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.
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语音识别的例子,大家可以继续去发现哦!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在Python数据分析中,Pandas库的DataFrame是最核心、最常用的结构化数据表对象,类似于Excel的二维表格,具备规整的行列结构、字 ...
2026-09-07在数据分析、经营复盘、业绩预测与经济统计工作中,平均增速(平均增长率)是衡量数据长期变化趋势、业务发展快慢的核心指标。不 ...
2026-09-07 很多数据分析师精通Excel单元格操作,但当被问到“表结构数据的基本处理单位是什么”“字段和记录的本质区别”“为什么表结 ...
2026-09-07随着大数据技术的快速发展,商业竞争逐步从传统的经验式经营转变为数据驱动的精细化运营。海量的用户行为数据、交易数据、运营数 ...
2026-09-04CDA数据分析师 出品 作者:李诗怡 1. 波士顿矩阵(BCG Matrix) 定义: BCG于1970年提出的业务组合分析工具,以"市场增长率"(纵 ...
2026-09-04 数据分析师八成以上的时间在和数据表格打交道,但许多人拿到Excel后习惯性地先算、先分析,结果回头发现漏了一列关键数据, ...
2026-09-04数据透视表是Excel与Power BI中最核心的数据分析工具,具备快速汇总、维度拆分、动态筛选的能力,可高效完成数据归类与统计展示 ...
2026-09-03在Power BI数据分析可视化场景中,堆积柱状图+折线图是最常用的复合图表组合。堆积柱状图适合展示各细分维度当期数值、结构占比 ...
2026-09-03 很多数据分析师每天与Excel打交道,但当被问到“表格结构数据的基本处理单位是什么”“数据类型误判会引发哪些分析错误”“ ...
2026-09-03CDA数据分析师 出品 作者:李诗怡 一、8个核心数据清洗函数 1. TRIM:一键清除多余空格(最常用) 作用:仅保留文本中"单词/字 ...
2026-09-02数据分析的核心并非单纯操作工具、整理报表或绘制图表,而是依靠科学的思维逻辑挖掘数据价值、解释业务现象、指导经营决策。在完 ...
2026-09-02在社会经济、产业研究、区域治理与大数据实证分析中,面板数据是最具研究价值的数据类型。面板数据同时包含截面维度与时间维度信 ...
2026-09-02 很多数据分析师能熟练计算均值、标准差,但当被问到“如何用一张图让业务方3秒内看懂核心结论”“面对不同数据类型该怎么选 ...
2026-09-02在数据驱动决策的体系中,数据分析按照分析目的可分为描述性分析、诊断性分析、预测性分析与指导性分析四大类型。其中,诊断性分 ...
2026-09-01网络请求是Python爬虫开发、接口测试、数据拉取的核心基础功能,Python生态中主要依靠 urllib 和 requests 两大库实现HTTP请求操 ...
2026-09-01 很多数据分析师面对业务问题时,常常感到“知道要分析,却不知道用什么方法”。其实,数据分析并非无章可循——从三大基础范 ...
2026-09-01在数据库设计与业务数据维护中,自增ID是数据表最常用的主键字段,用于唯一标识每一条业务数据,正常状态下ID应保持连续递增。但 ...
2026-08-31在数理统计、数据分析、经济测算与日常量化评估中,平均值是刻画数据集中趋势、反映整体水平的基础核心指标。在实际应用中,最常 ...
2026-08-31在数据驱动的时代,数据分析早已不是“凭经验、靠感觉”的零散操作,而是一套具备固定逻辑、标准化流程的系统方法——这就是数据 ...
2026-08-31在大数据时代背景下,海量行业数据亟需通过专业化工具挖掘潜在价值,辅助企业业务决策、优化运营模式、规避经营风险。Python凭借 ...
2026-08-28