首页 > Python资料 博客日记
【python的魅力】:教你如何用几行代码实现文本语音识别
2024-05-08 12:00:07Python资料围观196次
文章目录
引言
语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相应的文字和文字转换为语音。
一、运行效果
Python语音识别
二、文本转换为语音
2.1 使用pyttsx3
pyttsx3 是一个流行的 Python 第三方库,用于实现文本到语音(TTS)的转换。这个库支持多种操作系统,包括 Windows、Linux 和 macOS,并且可以在没有互联网连接的情况下工作,因为它使用的是计算机上安装的本地语音引擎。
主要特点:
- 跨平台:可以在不同的操作系统上运行。
- 离线工作:不依赖于互联网连接。
- 多种语音和语言:支持多种语音和语言选项。
- 自定义设置:允许用户调整语速、音量和语调等参数。
- 简单易用:具有直观的 API,易于集成和使用。
安装:
pip install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
【示例】:使用 pyttsx3 实现文本转换语音
import pyttsx3 as pyttsx
engine = pyttsx.init() # 初始化引擎
engine.say('独断万古荒天帝, 唯负罪州火桑女') # 添加文本到语音队列
engine.runAndWait() # 开始语音输出
2.2 使用SAPI实现文本转换语音
在 python 中,你也可以使用 SAPI 来做文本到语音的转换。
在Python中,win32com库是一个用于与Windows操作系统中的COM(Component Object Model)组件进行交互的模块。win32com.client模块提供了一种使用COM自动化的Python接口。通过win32com.client.Dispatch方法,可以访问和控制支持COM自动化的任何Windows应用程序或服务。
对于SAPI(Speech Application Programming Interface),可以通过win32com库来访问其功能,从而实现文本到语音(TTS)和语音识别。
【示例】:使用 SAPI 实现文本转换语音
from win32com.client import Dispatch
msg = "独断万古荒天帝, 唯负罪州火桑女"
speaker = Dispatch('SAPI.SpVoice') # 创建SAPI的语音引擎实例
speaker.Speak(msg) # 将文本转换为语音并朗读
del speaker # 删除 speaker 对象,释放与之关联的资源。
2.3 使用 SpeechLib实现文本转换语音
SpeechLib 是微软提供的一个用于语音功能的 COM 库,它允许开发者在 Windows 平台上进行文本到语音(TTS)和语音识别的开发。通过 SpeechLib,您可以控制语音引擎的多种属性,比如语速、音量、语调以及使用的语音库。
使用 SpeechLib,可以从文本文件中获取输入,再将其转换为语音。
使用使用 SpeechLib需要安装第三方库:comtypes
安装命令:
pip install comtypes -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
【示例】:使用 SpeechLib 实现文本转换语音
demo文件:
from comtypes.client import CreateObject
from comtypes.gen import SpeechLib # 导入 SpeechLib
engine = CreateObject("SAPI.SpVoice") # 创建 SAPI.SpVoice 对象的实例
stream = CreateObject("SAPI.SpFileStream") # 创建 SAPI.SpFileStream 对象的实例
infile = 'demo.txt'
outfile = 'demo_audio.wav'
stream.Open(outfile, SpeechLib.SSFMCreateForWrite) # 输出文件,准备写入音频数据
engine.AudioOutputStream = stream # 音频输出流设置为 stream 对象
f = open('demo', 'r', encoding='utf-8') # 打开输入文本文件
TheText = f.read() # 读取文件
f.close() # 关闭文件
engine.speak(TheText) # 使用语音引擎将文本转换为语音并输出。
stream.close() # 关闭音频流,完成音频文件的写入
三、语音转换为文本
3.1 使用 PocketSphinx实现语音转换文本
PocketSphinx 是一个轻量级的语音识别库,它是 CMU Sphinx 开源语音识别系统的一个子集。CMU Sphinx 由卡内基梅隆大学开发,是一个功能强大且灵活的语音识别系统。PocketSphinx 特别适用于嵌入式系统和移动设备,因为它的体积小、速度快,同时提供了相对较高的识别准确率。
PocketSphinx 的主要特点包括:
- 轻量级:适用于资源受限的环境,如移动设备和嵌入式系统。
- 实时性能:能够实现实时的语音识别。
- 易于使用:提供了简单的 API,方便开发者快速集成和使用。
- 可定制:允许开发者根据需要定制语言模型和声学模型。
所需的第三方模块:PocketSphinx和SpeechRecognition
安装命令:
pip install PocketSphinx -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install SpeechRecognition -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
【示例】:使用 PocketSphinx 实现语音转换文本
import speech_recognition as sr
audio_file = 'demo_audio.wav'
r = sr.Recognizer()
with sr.AudioFile(audio_file) as source:
audio = r.record(source)
try:
# print('文本内容:',r.recognize_sphinx(audio,language="zh_CN"))
print('文本内容:', r.recognize_sphinx(audio))
except Exception as e:
print(e)
如果在使用PocketSphinx时遇到问题,比如初始化失败,需要检查:
- 是否已经正确安装了pocketsphinx。
- 是否有合适的语言模型和字典可供使用。
- 是否有足够的权限访问所需的文件。
- 系统是否满足PocketSphinx的运行要求。
安装完 speech_recognition 之后是不支持中文的,需要在 Sphinx 语音识别工具包里面下载对应的普通话升学和语言模型 。
下载链接:
https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/
将下载好的普通话升学和语言模型放到安装 Python\Lib\site-packages\speech_recognition\pocketsphinx-data目录下
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- Anaconda版本和Python版本对应关系(持续更新...)
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程