【python的魅力】:教你如何用几行代码实现文本语音识别

简介: 【python的魅力】:教你如何用几行代码实现文本语音识别

引言

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

一、运行效果

image.png

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。
  • 是否有合适的语言模型和字典可供使用。
  • 是否有足够的权限访问所需的文件。

安装完 speech_recognition 之后是不支持中文的,需要在 Sphinx 语音识别工具包里面下载对应的普通话升学和语言模型 。

下载链接:


https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

将下载好的普通话升学和语言模型放到安装 Python\Lib\site-packages\speech_recognition\pocketsphinx-data目录下

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
6月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
346 100
|
6月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
519 95
|
7月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
350 104
|
7月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
612 99
|
6月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
295 88
|
6月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1091 68
|
机器学习/深度学习 自然语言处理 算法
未来语音交互新纪元:FunAudioLLM技术揭秘与深度评测
人类自古以来便致力于研究自身并尝试模仿,早在2000多年前的《列子·汤问》中,便记载了巧匠们创造出能言善舞的类人机器人的传说。
14344 116
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
1094 4
|
机器学习/深度学习 自然语言处理 搜索推荐
智能语音交互技术:构建未来人机沟通新桥梁####
【10月更文挑战第28天】 本文深入探讨了智能语音交互技术的发展历程、当前主要技术框架、核心算法原理及其在多个领域的应用实例,旨在为读者提供一个关于该技术全面而深入的理解。通过分析其面临的挑战与未来发展趋势,本文还展望了智能语音交互技术如何继续推动人机交互方式的革新,以及它在未来社会中的潜在影响。 ####
1402 0

推荐镜像

更多