当前位置: 代码网 > it编程>前端脚本>Python > 【python的魅力】:教你如何用几行代码实现文本语音识别

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

2024年07月31日 Python 我要评论
这个库支持多种操作系统,包括 Windows、Linux 和 macOS,并且可以在没有互联网连接的情况下工作,因为它使用的是计算机上安装的本地语音引擎。SpeechLib 是微软提供的一个用于语音功能的 COM 库,它允许开发者在 Windows 平台上进行文本到语音(TTS)和语音识别的开发。通过 SpeechLib,您可以控制语音引擎的多种属性,比如语速、音量、语调以及使用的语音库。语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相应的文字和文字转换为语音。

引言

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

一、运行效果

python语音识别

二、文本转换为语音

2.1 使用pyttsx3

pyttsx3 是一个流行的 python 第三方库,用于实现文本到语音(tts)的转换。这个库支持多种操作系统,包括 windows、linux 和 macos,并且可以在没有互联网连接的情况下工作,因为它使用的是计算机上安装的本地语音引擎。

主要特点

安装

【示例】:使用 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

安装命令

【示例】:使用 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 的主要特点包括

所需的第三方模块:pocketsphinxspeechrecognition
安装命令

【示例】:使用 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 语音识别工具包里面下载对应的普通话升学和语言模型 。
下载链接:

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com