当前位置: 首页 > news >正文

python-自动化篇-运维-语音识别

文章目录

  • 理论
    • 文本转换为语音
      • 使用 pyttsx
      • 使用 SAPI
      • 使用 SpeechLib
    • 语音转换为文本
  • 代码和效果
    • 01使用pyttsx实现文本_语音
    • 02使用SAPI实现文本_语音
    • 03使用SpeechLib实现文本_语音
    • 04使用PocketSphinx实现语音转换文本

理论

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

文本转换为语音

使用 pyttsx

使用名为 pyttsx 的 python 包,你可以将文本转换为语音。直接使用 pip 就可以进行安装, 命令如下:

pip install pyttsx3

【示例】使用 pyttsx 实现文本转换语音

import pyttsx3 as pyttsx 
engine=pyttsx.init() 
engine.say('你好 pyttsx') 
engine.runAndWait() 

使用 SAPI

在 python 中,你也可以使用 SAPI 来做文本到语音的转换。

【示例】使用 SAPI 实现文本转换语音

from win32com.client import Dispatch 
msg="你好 SAPI" 
speaker = Dispatch('SAPI.SpVoice') 
speaker.Speak(msg) 
del speaker 

使用 SpeechLib

使用 SpeechLib,可以从文本文件中获取输入,再将其转换为语音。先使用 pip 安装, 命令如下:

pip install comtypes 

【示例】使用 SpeechLib 实现文本转换语音

from comtypes.client import CreateObject 
engine=CreateObject("SAPI.SpVoice") 
stream=CreateObject('SAPI.SpFileStream') 
from comtypes.gen import SpeechLib 
infile='demo.txt' 
outfile='demo_audio.wav'
stream.Open(outfile,SpeechLib.SSFMCreateForWrite) engine.AudioOutputStream=stream 
f=open(infile,'r',encoding='utf-8') 
theText=f.read() 
f.close() 
engine.speak(theText) 
stream.close() 

语音转换为文本

使用 PocketSphinx PocketSphinx 是一个用于语音转换文本的开源 API。它是一个轻量级的语音识别引擎, 尽管在桌面端也能很好地工作,它还专门为手机和移动设备做过调优。
首先使用 pip 命令安装所需模块,命令如下:

pip install PocketSphinx 
pip install SpeechRecognition 

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

注意:
□ 安装完 speech_recognition 之后是不支持中文的,需要在 Sphinx 语音识别工具包里 面 下 载 对 应 的 普 通 话 升 学 和 语 言 模 型 。 下 载 地 址 https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Mo dels/
□ 将 下 载 好 的 普 通 话 升 学 和 语 言 模 型 放 到 安 装 speech_recognition 模 块 的 pocketsphinx-data 目录下。

代码和效果

01使用pyttsx实现文本_语音

import pyttsx3 as pyttsx
engine=pyttsx.init()
engine.say('好好学习')
engine.runAndWait()

复制到vscode或其他,运行时需要 pip install pyttsx3
在这里插入图片描述
在这里插入图片描述

02使用SAPI实现文本_语音

from win32com.client import Dispatch
speaker=Dispatch('SAPI.SpVoice')
speaker.Speak('大家好')
del speaker

在这里插入图片描述

03使用SpeechLib实现文本_语音

from comtypes.client import CreateObject
from comtypes.gen import SpeechLib
engine=CreateObject('SAPI.SpVoice')
stream=CreateObject('SAPI.SpFileStream')
infile='demo.txt'
outfile='demo_audio.wav'
stream.open(outfile,SpeechLib.SSFMCreateForWrite)
engine.AudioOutputStream=stream
#读取文本内容
f=open(infile,'r',encoding='utf-8')
theText=f.read()
f.close()
engine.speak(theText)
stream.close()

需要将文本放到电脑根目录下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

04使用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)#将语音转换为文本
# print('文本内容:',r.recognize_sphinx(audio))
print('文本内容:',r.recognize_sphinx(audio,language='zh-CN'))

一、安装环境库
在这里插入图片描述
ModuleNotFoundError: No module named ‘speech_recognition’
是:pip install speechrecognition
在这里插入图片描述
再安装:pip install PocketSphinx
在这里插入图片描述

二、文件放根目录
在这里插入图片描述

相关文章:

  • ctfshow misc入门 misc24-31
  • Linux驱动 SPI子系统
  • 智能决策的艺术:探索商业分析的最佳工具和方法
  • k8s学习-Kubernetes的包管理器Helm
  • 小米服务治理——客户端熔断器(Google SRE客户端熔断器)
  • WPF图表库LiveChart异常问题处理-System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围
  • 【GPU驱动开发】- GPU架构流程
  • netlink学习
  • HBase 数据导入导出
  • c语言:贪吃蛇的实现
  • 随着网络的快速发展,网络安全问题也日益凸显,遇到攻击该如何处理,如何抉择合适的防护方案
  • streampark+flink一键整库或多表同步mysql到doris实战
  • echarts条形图添加滚动条
  • Vue.js 中子组件向父组件传值的方法
  • 1、安全开发-Python爬虫EDUSRC目标FOFA资产Web爬虫解析库
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【译】理解JavaScript:new 关键字
  • 30天自制操作系统-2
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Android框架之Volley
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • iOS编译提示和导航提示
  • Mac转Windows的拯救指南
  • Puppeteer:浏览器控制器
  • React-生命周期杂记
  • spark本地环境的搭建到运行第一个spark程序
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Yeoman_Bower_Grunt
  • 动态魔术使用DBMS_SQL
  • 近期前端发展计划
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何解决微信端直接跳WAP端
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 微信小程序:实现悬浮返回和分享按钮
  • 微信小程序开发问题汇总
  • 应用生命周期终极 DevOps 工具包
  • Hibernate主键生成策略及选择
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 组复制官方翻译九、Group Replication Technical Details
  • 昨天1024程序员节,我故意写了个死循环~
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​Java并发新构件之Exchanger
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (2)STL算法之元素计数
  • (4)事件处理——(7)简单事件(Simple events)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)VirtualBox安装增强功能