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

文章目录

    • 引言
      • 一、运行效果
      • 二、文本转换为语音
        • 2.1 使用pyttsx3
        • 2.2 使用SAPI实现文本转换语音
        • 2.3 使用 SpeechLib实现文本转换语音
      • 三、语音转换为文本
        • 3.1 使用 PocketSphinx实现语音转换文本

引言

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

一、运行效果

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,方便开发者快速集成和使用。
  • 可定制:允许开发者根据需要定制语言模型和声学模型。

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

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目录下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/592036.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSM+Vue+小程序+基于微信小程序的高校学生事务管理系统

项目配合学校日常生活通知,考试等管理需要,开发学校事务管理系统,maven管理依赖,mybatis处理数据库交互 学校管理 学院管理 班级管理 年级管理 教师管理 通知公告管理 学生资料管理 待办事项管理 教务处通知管理 讲座通…

【Conda】解决无名虚拟环境问题

文章目录 问题描述:无名虚拟环境解决步骤1 添加虚拟环境目录到envs步骤2 成功命名 问题描述:无名虚拟环境 如果不指定创建目录,默认创建在C盘用户目录下,这应该是很多人不愿意的吧。 指定目录创建虚拟环境命令如下: …

vector的使用

1.构造函数 void test_vector1() {vector<int> v; //无参的构造函数vector<int> v2(10, 0);//n个value构造&#xff0c;初始化为10个0vector<int> v3(v2.begin(), v2.end());//迭代器区间初始化,可以用其他容器的区间初始化vector<int> v4(v3); //拷贝…

基于yolov8的苹果腐败检测系统,系统既支持图像检测,也支持视频和摄像实时检测(pytorch框架)【python源码+UI界面+功能源码详解】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于yolov8的苹果腐败检测系统&#xff0c;系统既支持图像检测&#xff0c;也支持视频和摄像实时检测_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov8的苹果腐败检测系统是在pytorc…

STM32 F103C8T6学习笔记17:类IIC通信(SMBus协议)—MLX90614红外非接触温度计

今日学习配置MLX90614红外非接触温度计 与 STM32 F103C8T6 单片机的通信 文章提供测试代码讲解、完整工程下载、测试效果图 本文需要用到的大概基础知识&#xff1a;1.3寸OLED配置通信显示、IIC通信、 定时器配置使用 这里就只贴出我的 OLED驱动方面的网址链接了&#xff1a…

Golang数组与切片

文章目录 数组数组介绍数组的定义方式访问与修改数组元素遍历数组元素数组指针 切片切片介绍切片的定义方式访问与修改切片元素添加切片元素切片的拷贝遍历切片元素string的切片 数组 数组介绍 数组介绍 在Go中&#xff0c;数组是一个由固定长度的特定类型元素组成的序列&…

[Algorithm][队列][宽搜BFS][N叉树的层序遍历][二叉树的锯齿形层序遍历][二叉树最大宽度][在每个树行中找最大值]详细讲解

目录 1.N 叉树的层序遍历1.题目链接2.算法思路详解3.代码实现 2.二叉树的锯齿形层序遍历1.题目链接2.算法原理详解3.代码实现 3.二叉树最大宽度1.题目链接2.算法原理详解3.代码实现 4.在每个树行中找最大值1.题目链接2.算法原理详解3.代码实现 1.N 叉树的层序遍历 1.题目链接 …

数据结构之链表深度讲解

小伙伴们&#xff0c;大家好呀&#xff0c;上次听我讲完顺序表想必收获不少吧&#xff0c;嘿嘿&#xff0c;这篇文章你也一样可以学到很多&#xff0c;系好安全带&#xff0c;咱们要发车了。 因为有了上一次顺序表的基础&#xff0c;所以这次我们直接进入正题&#xff0c;温馨…

Activiti7 开发快速入门【2024版】

记录开发最核心的部分&#xff0c;理论结合业务实操减少废话&#xff0c;从未接触工作流快速带入开发。假设你是后端的同学学过JAVA和流程图&#xff0c;则可以继续向后看&#xff0c;否则先把基础课程书准备好先翻翻。 为什么要工作流 比起直接使用状态字段&#xff0c;工作…

【 书生·浦语大模型实战营】作业(六):Lagent AgentLego 智能体应用搭建

【 书生浦语大模型实战营】作业&#xff08;六&#xff09;&#xff1a;Lagent & AgentLego 智能体应用搭建 &#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方…

【机器学习】集成方法---Boosting之AdaBoost

一、Boosting的介绍 1.1 集成学习的概念 1.1.1集成学习的定义 集成学习是一种通过组合多个学习器来完成学习任务的机器学习方法。它通过将多个单一模型&#xff08;也称为“基学习器”或“弱学习器”&#xff09;的输出结果进行集成&#xff0c;以获得比单一模型更好的泛化性…

上海计算机学会2021年1月月赛C++丙组T2康托表

题目背景 康托是一名数学家&#xff0c;他证明了一个重要的定理&#xff0c;需要使用一张表&#xff1a; 这个表的规律是&#xff1a; 从上到下&#xff1a;每一行的分子依次增大&#xff1b;从左到右&#xff1a;每一列的分母依次增大。 康托以一种不重复、不遗漏的方式&am…

【深耕 Python】Quantum Computing 量子计算机(1)图像绘制基础

一、绘制静止图像 使用matplotlib库绘制函数图像y sin(pi * x): import math import matplotlib.pyplot as pltx_min -2.0 x_max 2.0N 1000x1 [] y1 []for i in range(N 1):x x_min (x_max - x_min) * i / Ny math.sin(math.pi * x)x1.append(x)y1.append(y)plt.xl…

关于继承~

继承 动物有猫、狗&#xff0c; 猫又分为加菲猫、布偶猫......&#xff1b;狗又有哈士奇、德国牧羊犬...... 我们发现&#xff0c;下一类除了拥有上一类的共性之外&#xff0c;还拥有自己的特性。 于是我们可以利用继承的方式来减少重复的代码 继承的基本语法 class A:p…

二叉树的直径

题目描述&#xff1a;给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。 示例 1&#xff1a; 输入&#xff1a;root […

在剪映专业版中新增字体的方法

我一开始以为剪映专业版没有繁体字&#xff0c;结果发现有一个现代繁体&#xff0c;如图所示: 但是我已经下载了字体了&#xff0c;不用就可惜了。 点击汉仪粗黑繁&#xff0c;安装。 安装之后&#xff0c;重启电脑&#xff0c;打开剪映&#xff0c;就可以搜索到这个字体了。 这…

每日OJ题_贪心算法二④_力扣2418. 按身高排序

目录 力扣2418. 按身高排序 解析代码 力扣2418. 按身高排序 2418. 按身高排序 难度 简单 给你一个字符串数组 names &#xff0c;和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i&#xff0c;names[i] 和 heights[i] 表示第 i 个…

罗宾斯《管理学》第13版/教材讲解/考研真题视频课程/网课

本课程是罗宾斯《管理学》&#xff08;第13版&#xff09;精讲班&#xff0c;为了帮助参加研究生招生考试指定考研参考书目为罗宾斯《管理学》&#xff08;第13版&#xff09;的考生复习专业课&#xff0c;我们根据教材和名校考研真题的命题规律精心讲解教材章节内容。 序号名…

读天才与算法:人脑与AI的数学思维笔记17_歌曲的创作公式

1. 人为何创作音乐 1.1. 音乐一直具有算法性质&#xff0c;这意味着在所有的艺术形式中&#xff0c;它受到人工智能进步的威胁最大 1.1.1. 音乐也是所有艺术形式中最抽象的一种&#xff0c;它利用结构和模式&#xff0c;而正是这种抽象的性质使它与数学紧密相连 1.1.2. 在这…

查找算法之二分查找

一、算法介绍 二分查找&#xff0c;也称为折半查找&#xff0c;是一种在有序数组中查找特定元素的高效算法。对于包含 n 个元素的有序数组&#xff0c;二分查找的步骤如下&#xff1a; 确定搜索范围&#xff1a;首先&#xff0c;将要查找的元素与数组中间的元素进行比较。如果…