博客
关于我
python 利用pyttsx3文字转语音
阅读量:798 次
发布时间:2023-03-07

本文共 3035 字,大约阅读时间需要 10 分钟。

使用 pyttsx3 语音合成库进行文本朗读

安装

安装 pyttsx3 库以便使用其语音合成功能:

pip install pyttsx3

语音引擎工厂

Pyttsx3 使用工厂模式来获取语音引擎实例。在第一次调用 pyttsx3.init() 时,会返回一个新的 pyttsx3.Engine 对象。若已有引擎实例存在,则会使用现有的引擎实例,否则会创建一个新的引擎实例。

语音引擎的初始化方法如下:

pyttsx.init([driverName : string, debug : bool]) → pyttsx.Engine

初始化参数

  • driverName:指定使用的语音驱动程序。

    • sapi5:适用于 Windows 的 SAPI5 驱动程序。
    • nsss:适用于 Mac OS X 的 NSSpeechSynthesizer 驱动程序。
    • espeak:适用于其他平台的 eSpeak 驱动程序。
  • debug:设置调试状态标志。建议在开发阶段设置为 True

  • 语音引擎接口

    了解 pyttsx3 引擎的 API 是使用它功能的关键。以下是 pyttsx.Engine 的主要方法:

    方法名称 参数 返回值 简要说明
    connect(topic : str, cb : callable) topic:事件主题;cb:回调函数 返回字典 在指定主题上注册回调函数
    disconnect(token : dict) token:回调失联的标记 无返回值 取消回调函数的注册
    endLoop() 无参数 无返回值 结束事件循环
    getProperty(name : str) name:属性名称 返回对象 获取引擎实例的属性值
    setProperty(name : str) name:属性名称 返回对象 设置引擎实例的属性值
    say(text : unicode, name : str) text:要朗读的文本;name:发音人关联名 无返回值 朗读指定文本
    runAndWait() 无参数 无返回值 等待所有事件处理完成并结束循环
    startLoop([useDriverLoop : bool]) useDriverLoop:是否启用驱动循环 无返回值 启动事件驱动循环

    语音合成参数

    通过 pyttsx3.voice.Voice 类设置发音参数:

    属性名称 类型 默认值 说明
    age str None 发音人的年龄
    gender str None 性别:male、female 或 neutral
    id str None 发音签名的唯一标识符
    languages list [] 支持的语言列表
    name str None 发音人的名称

    文本朗读示例

    以下是使用 pyttsx3 进行文本朗读的示例代码:

    import pyttsx3engine = pyttsx3.init()engine.say('Sally sells seashells by the seashore.')engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

    事件监听

    注册回调函数来跟踪朗读过程:

    import pyttsx3def onStart(name):    print('开始朗读:', name)def onWord(name, location, length):    print('正在朗读单词:', name, '位置:', location, '长度:', length)def onEnd(name, completed):    print('完成朗读:', name, '是否完成:', completed)engine = pyttsx3.init()engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

    语音合成控制

    语速控制

    设置语速:

    import pyttsx3engine = pyttsx3.init()rate = engine.getProperty('rate')engine.setProperty('rate', rate + 50)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

    音量控制

    调整音量:

    import pyttsx3engine = pyttsx3.init()volume = engine.getProperty('volume')engine.setProperty('volume', volume - 0.25)engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

    更换发音人

    切换发音人:

    import pyttsx3engine = pyttsx3.init()voices = engine.getProperty('voices')for voice in voices:    engine.setProperty('voice', voice.id)    engine.say('The quick brown fox jumped over the lazy dog.')engine.runAndWait()

    事件驱动循环

    实现基于事件驱动的朗读循环:

    import pyttsx3def onStart(name):    print('开始朗读:', name)def onWord(name, location, length):    print('正在朗读单词:', name, '位置:', location, '长度:', length)def onEnd(name, completed):    print('完成朗读:', name, '是否完成:', completed)    if name == 'fox':        engine.say('What a lazy dog!', 'dog')    elif name == 'dog':        engine.endLoop()engine = pyttsx3.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engine.startLoop()

    外部驱动循环

    在外部驱动循环中使用引擎:

    import pyttsx3engine = pyttsx3.init()engine.say('The quick brown fox jumped over the lazy dog.', 'fox')engine.startLoop(False)# 需要在外部循环中调用 iterate() 方法externalLoop()engine.endLoop()

    通过以上代码示例,可以轻松实现文本到语音的转换功能。Pyttsx3 提供了丰富的接口,适用于多种开发场景。

    转载地址:http://zjofk.baihongyu.com/

    你可能感兴趣的文章
    python 图片转文字、语音转文字、文字转语音保存音频并朗读
    查看>>
    python 在包含类似字符\x16、\x12、\x某某的数组中将以\x开头的字符找出来的方法
    查看>>
    Python 在并行进程之间共享字典
    查看>>
    Python 垃圾收集器文档
    查看>>
    python 基于 wordcloud + jieba + matplotlib 生成词云
    查看>>
    python 基于detectron或mask_rcnn的mask遮罩区域进行图片截取
    查看>>
    Python编程:Tkinter图形界面设计(2)
    查看>>
    Python 基础 - Day 5 Learning Note - 模块 之 标准库:time (1)
    查看>>
    Python 基础一
    查看>>
    python 基础操作知识整理总结
    查看>>
    Python 基础知识点整理与分享,期盼你的交流!
    查看>>
    python 基础第七篇
    查看>>
    Python编程:Tkinter图形界面设计(1)
    查看>>
    Python 基础语法:None
    查看>>
    Python 基础语法:基本数据类型(一)
    查看>>
    python编程读取写入excel_Python读取txt内容写入xls格式excel中的方法
    查看>>
    Python 基础语法:基本数据类型(字典)
    查看>>
    Python 基础语法:基本数据类型(字符串)
    查看>>
    Python 基础语法:基本数据类型(集合)
    查看>>
    Python编程的终极十大工具
    查看>>