tts语音和语音识别

https://blog.csdn.net/qq_46092061/article/details/113945654
https://blog.csdn.net/weixin_46089319/article/details/107860605?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.control&spm=1001.2101.3001.4242
https://www.cnblogs.com/henjay724/p/9576670.html
助的是SpeechRecognition系统以及CMU Sphinx引擎来实现的语音识别功能

Python语音识别
文本转换为语音
语音转换为文本
普通话识别问题
后序
  语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相应的文字和文字转换为语音。

文本转换为语音
使用 pyttsx
 使用名为 pyttsx 的 python 包,你可以将文本转换为语音。直接使用 pip 就可以进行安装, 命令如下:
pip install pyttsx3
1
下载缓慢推荐您使用第三方通道下载

pip install -i https://mirrors.aliyun.com/pypi/simple pyttsx3
1
【示例】使用 pyttsx 实现文本转换语音

import pyttsx3 as pyttsx

调用初始化方法,获取讲话对象

engine = pyttsx.init()
engine.say('加油!努力吧少年')
engine.runAndWait()

1
2
3
4
5
6
7
使用 SAPI
 在 python 中,你也可以使用 SAPI 来做文本到语音的转换。
【示例】使用 SAPI 实现文本转换语音
from win32com.client import Dispatch

获取讲话对象

speaker = Dispatch('SAPI.SpVoice')

讲话内容

speaker.Speak('猪哥猪哥,你真了不起')
speaker.Speak('YL美吗?')
speaker.Speak('ZS说她美吖')

释放对象

del speaker
1
2
3
4
5
6
7
8
9
10
11
12
使用 SpeechLib
 使用 SpeechLib,可以从文本文件中获取输入,再将其转换为语音。先使用 pip 安装, 命令如下:
pip install comtypes
1
【示例】使用 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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
语音转换为文本
使用 PocketSphinx
  PocketSphinx 是一个用于语音转换文本的开源 API。它是一个轻量级的语音识别引擎, 尽管在桌面端也能很好地工作,它还专门为手机和移动设备做过调优。首先使用 pip 命令安装所需模块,命令如下:
pip install PocketSphinx
pip install SpeechRecognition
1
2
下载地址:https://pypi.org/project/SpeechRecognition/

下载缓慢推荐您使用第三方通道下载

pip install -i https://mirrors.aliyun.com/pypi/simple 模块名
1
【示例】使用 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)) # recognize_sphinx() 参数中language='en-US' 默认是英语

print('文本内容:', r.recognize_sphinx(audio, language='zh-CN'))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
普通话识别问题
 speech_recognition 默认识别英文,是不支持中文的,需要在Sphinx语音识别工具包里面下载对应的 普通话包 和 语言模型 。

安装步骤:

下 载 地 址:https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

点击 Mandarin下载cmusphinx-zh-cn-5.2.tar.gz并解压.

在python安装目录下找到Libsite-packagesspeech_recognition

点击进入pocketsphinx-data文件夹,会看到一个en-US文件夹,再新建文件夹zh-CN

在这个文件夹中添加进入刚刚解压的文件,需要注意:把解压出来的zh_cn.cd_cont_5000文件夹重命名为acoustic-model、zh_cn.lm.bin命名为language-model.lm.bin、zh_cn.dic中dic改为dict格式。即与en-US文件夹中命名一样。

参考:https://blog.csdn.net/qq_32643313/article/details/99936268
致以感谢

后序
浅显的学习语音识别,不足之处甚多,深究后,将更新文章。

感谢跟随老师的代码在未知领域里探索,希望我能走的更高更远
————————————————
版权声明:本文为CSDN博主「ZSYL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_46092061/article/details/113945654

发表新评论