pyttsx3自动化脚本经典案例

pyttsx 是一个 Python 库,可以将文本转换为语音。它支持多个语音引擎,并且可以在 Windows、Linux 和 macOS 等不同平台上运行。

1  pyttsx 可以用来做什么?


将文本转换成语音输出,例如将电子书朗读出来。
在语音助手或者聊天机器人中实现自然语言的语音回复功能。
在自动化脚本中添加语音提示功能。
pyttsx 的特点
支持多个语音引擎,包括 Microsoft SAPI5(Windows 平台)和 espeak(跨平台)等。
提供了丰富的语音选项,包括语速、音调、音量等。
跨平台支持,可以在 Windows、Linux 和 macOS 上运行。
易于使用的 API 接口,可以通过几行代码快速实现文本转语音的功能。

语音常见的概念:

2 ASR语音识别(Automatic Speech Recognition),是将声音转化成文字的过程

① 通过麦克风输入人的声音

② 声学处理:处理掉杂音,噪音

③ 特征处理:提取声音中的关键因素 如:小米 xiao mi

④ 模型匹配:如xiaomi 可以匹配小米或者小蜜,需要根据前后内容计算出概率最大内容进行输出给用户确认

2.2 NLP:自然语言处理(Natural Language Processing),是理解和处理文本的过程

文本预处理、词法分析、句法分析、语义理解、分词、文本分类、文本相似度处理、情感倾向分析、文本生成等。

NLP的工作逻辑是:将用户的指令进行Domain(领域)→Intent(意图)→Slot(词槽)三级拆分。

以“帮我设置一个明天早上8点的闹钟”为例:该指令命中的领域是“闹钟”,意图是“新建闹钟”,词槽是“明天8点”。

这样,就将用户的意图拆分成机器可以处理的语言。

2.3 TTS:语音合成(Text-To-Speech):简称TTS,是把文本转化成语音的过程

  • 1、 拼接法

首先,要准备好大量的语音,这些音都是又基本的单位拼接成的(基本单位如音节、音素等),然后从已准备好的声音中,抽取出来合成目标声音。

  • 优点:语音合成的质量比较高。

  • 缺点:数据量要求很大,数据库里必须有足够全的“音”。

  • 2、 参数法

根据统计模型来产生每时每刻的语音参数(包括基频、共振峰频率等),然后把这些参数转化为波形。

  • 优点:对数据的要求要小点。

  • 缺点:质量比拼接法差一些。

  • 2.4 讯飞小语种语音合成方案

  • webAPI 在线合成方式

    https://console.xfyun.cn/services/tts

3 使用 pyttsx 编码

要开始使用 pyttsx,首先需要安装该库。在命令行或终端中输入以下命令:

pip install pyttsx3
 

import pyttsx3

engine = pyttsx3.init()
engine.say("Hello, world!")
engine.runAndWait()

这段代码会输出一句 "Hello, world!" 的语音。

示例

以下是一些使用 pyttsx 的示例:

示例 1:朗读文本文件
import pyttsx3

engine = pyttsx3.init()

with open('text.txt', 'r') as file:
    text = file.read()

engine.say(text)
engine.runAndWait()
示例 2:改变语速和音量
import pyttsx3

engine = pyttsx3.init()

engine.setProperty('rate', 180)  # 设置语速为每分钟 180 个单词
engine.setProperty('volume', 0.8)  # 设置音量为 80%

engine.say("Hello, world!")
engine.runAndWait()
示例 3:列出可用的语音引擎
import pyttsx3

engine = pyttsx3.init()

voices = engine.getProperty('voices')
for voice in voices:
    print(voice.id, voice.name, voice.languages)

这个例子会列出当前系统上可用的所有语音引擎及其名称和支持的语言列表。

自己写了个抽奖的小例子:

import random
import time

import pyttsx3

engine = pyttsx3.init()

# 参与抽奖的名单
participants = ['刘备', '关羽', '张飞', '赵云', '诸葛亮','庞统']

""" RATE"""
rate = engine.getProperty('rate')   # getting details of current speaking rate
engine.setProperty('rate', 125)     # setting up new voice rate


"""VOLUME"""
volume = engine.getProperty('volume')   #getting to know current volume level (min=0 and max=1)                        #printing current volume level
engine.setProperty('volume',1.0)    # setting up volume level  between 0 and 1

vo = engine.getProperty('voices')
zh_voice_id = ''
for voice in vo:
    if 'ZH-CN' in voice.id:
        zh_voice_id = voice.id
        break
if zh_voice_id == '':
    print('没有安装中文语言包')


"""VOICE"""

voices = engine.getProperty('voices')       #getting details of current voice
#engine.setProperty('voice', voices[0].id)  #changing index, changes voices. o for male
engine.setProperty('voice', voices[1].id)   #changing index, changes voices. 1 for female
engine.setProperty('voice', zh_voice_id)
#engine.setProperty('voice', "TTS_MS_ZH-CN_HUIHUI_11.0")

# engine.say('My current speaking rate is ' + str(rate))

engine.say("你可以选择 表扬我们团队的一个人:")
engine.say("或者 唱一首歌:")
engine.say("或者 讲一个笑话:")
engine.say("或者 有感情的朗诵一首古诗:")

engine.say("现在开始抽奖")
engine.runAndWait()
# 随机选择一个获胜者
winner = random.choice(participants)
#print(f"Congratulations ! {winner} You are an excellent person!")
time.sleep(5)
# 输出获奖者
gx = "  Congratulations! "+winner
engine.say(gx)
engine.say("恭喜你:"+winner+":你是最幸运的人")
engine.say("恭喜你:"+winner+":你是最幸运的人")
engine.say("请开始你的表演")
engine.say("谢谢!掌声在哪里?")

engine.runAndWait()
engine.stop()

结论
如果你需要在 Python 中实现文本转语音的功能,那么 pyttsx 是一个不错的选择。它可以轻松地与你的代码集成,并提供了一系列易于使用的 API 接口。无论是在开发语音助手还是自动化脚本中,pyttsx 都是一个非常实用的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fish_study_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值