bool转string_python利用pyttsx3实现文字转语音

b8ab7cf9d8343b066676201e1a566b74.png

点击上方蓝字关注我们

1ccc1e36a1dbe9ccfaf967d053da02e8.png

今天小编给大家介绍一个有趣的事情,让代码开口说话,简单点说就是python利用pyttsx3实现文字转语音。感觉还是蛮有趣的,并且支持中文哦。

  • 首先我们先安装pyttsx3

    pip install pyttsx3
  • 如果是windows操作系统,并且未安装pywin32, 需要安装pywin32

    pip install pywin32
  • 我们首先让代码说句Hello World,然后再说句中文

    import pyttsx3 

    # 模块初始化
    engine = pyttsx3.init()
    print('准备开始语音播报...')
    engine.say('Hello World')
    engine.say('孙肖宁')
    # 等待语音播报完毕, 不写这个是不可以的哦
    engine.runAndWait()

    是不是很简单呢

  • 我们还可以进行语速控制、音量控制、更换发音人声音

    import pyttsx3

    # 模块初始化
    engine = pyttsx3.init()
    print('准备开始语音播报...')

    # 语速控制,默认值为200
    rate = engine.getProperty('rate')
    engine.setProperty('rate', rate - 50)
    # 音量控制,范围为0.0-1.0
    volume = engine.getProperty('volume')
    engine.setProperty('volume', 0.6)
    # 添加朗读文本
    engine.say('窗前明月光,疑是地上霜。')

    # 等待语音播报完毕
    engine.runAndWait()
  • 我们再来说下更换发音人的声音,目前中文仅支持3种

    import pyttsx3

    # 模块初始化
    engine = pyttsx3.init()
    volume = engine.getProperty('volume')

    # 普通话发音
    voices = engine.setProperty(
    'voice', "com.apple.speech.synthesis.voice.ting-ting.premium")

    # 标准的粤语发音
    # voices = engine.setProperty(
    # 'voice', "com.apple.speech.synthesis.voice.sin-ji")

    # 台湾女生普通话发音
    # voices = engine.setProperty(
    # 'voice', "com.apple.speech.synthesis.voice.mei-jia")
    print('准备开始语音播报...')
    # 输入语音播报词语
    engine.setProperty('volume', 3)
    engine.say("窗前明月光,疑是地上霜。举头望明月,低头思故乡。")

    engine.runAndWait()
    engine.stop()

    另外你可以尝试查看内置的其他声音,遍历下面的voices即可
    voices = engine.getProperty('voices')
    engine.setProperty('voice', voices[0].id)

    • 普通话: com.apple.speech.synthesis.voice.ting-ting.premium

    • 粤语 :com.apple.speech.synthesis.voice.ting-ting.premium

    • 台湾女生普通话: com.apple.speech.synthesis.voice.mei-jia

详解

  • 语音引擎工厂类似于设计模式中的“工厂模式”,pyttsx3通过初始化来获取语音引擎。当我们第一次调用init操作的时候,会返回一个pyttsx3的engine对象,再次调用的时候,如果存在engine对象实例,就会使用现有的,否则再重新创建一个。pyttsx.init([driverName : string, debug : bool]) → pyttsx.Engine

从方法声明上来看,第一个参数指定的是语音驱动的名称,这个在底层适合操作系统密切相关的。如下:

  • drivename:由pyttsx3.driver模块根据操作系统类型来调用,默认使用当前操作系统可以使用的最好的驱动。

    • sapi5 - SAPI5 on Windows

    • nsss - NSSpeechSynthesizer on Mac OS X

    • espeak - eSpeak on every other platform

  • debug: 要不要以调试状态输出,开发阶段可以设置为True。

17985dab3444350edd5036ddf8380fea.png

函数说明

  • connect()在给定的topic上添加回调通知

    • dict

    • topic(string):要描述的事件名称;

    • cb(callable):回调函数。

    • 参数:

    • 返回值:

  • disconnect()结束连接

    • token(dict):回调失联的返回标记

    • 参数:

    • 返回值:
      Void

  • endLoop()简单来说就是结束事件循环

  • getProperty()获取当前引擎实例的属性值

    • name(string):rate: 每分钟字数的语音速率,默认为每分钟200个。

    • name(string):voice: 语音的字符串标识符。

    • name(string):voices: pyttsx3.voice.Voice描述符对象列表。

    • name(string):volume:音量的大小。

    • 参数:

    • 返回值:
      Object

  • setProperty()获取当前引擎实例的属性值

    • name(string):rate: 每分钟字数的语音速率,默认为每分钟200个。

    • name(string):voice: 语音的字符串标识符。

    • name(string):volume:音量的大小。

    • value(int):rate: 设置每分钟读的字数。

    • value:voice:设置发音,后文中会再讲到。

    • valu(float):volume:设置音量大小,0.0-1.0之间;默认1.0。

    • 参数:

    • 返回值:
      Object

  • say()预设要朗读的文本数据

    • text(unicode):要进行朗读的文本数据。

    • name(strin):关联发音人(一般用不到)

    • 参数:

  • runAndWait()当事件队列中事件全部清空的时候返回

  • startLoop()开启事件队列

    • [useDriverLoop(bool)]:是否启用驱动循环。

    • 参数:

  • stop()停止当前讲话并清除命令队列。

  • 喜欢就点个在看再走吧 148ced1d227dc59a1c36fbc15a306d72.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值