一、说明

介绍一款python调用库,离线软件包pyttsx3 API,它能够将文字转化成语音文件。Python 中有多种 API 可用于将文本转换为语音。pyttsx3 是一个非常易于使用的工具,可将输入的文本转换为音频。与其它类似的库不同,它可以离线工作,并且与 Python 2 和 3 兼容。

二、环境安装

安装 pyttsx3 API,请打开终端并写入:

  pip install pyttsx3

该库依赖于 win32,因此我们在执行程序时可能会出现错误。为了避免这种情况,只需在您的环境中安装 pypiwin32 即可。

  pip install pypiwin32

三、pyttsx3 中重要函数

一些重要函数包括:

  • pyttsx3.init([driverName : string, debug : bool]) – 获取对将使用给定驱动程序的引擎实例的引用。如果请求的驱动程序已被另一个引擎实例使用,则返回该引擎。否则,将创建一个新引擎。
  • getProperty(name : string) – 获取引擎属性的当前值。
  • setProperty(name, value) – 将命令排队以设置引擎属性。新的属性值会影响此命令之后排队的所有话语。
  • say(text : unicode, name : string) – 将命令排队以说出话语。语音根据队列中该命令之前设置的属性输出。
  • runAndWait() – 处理所有当前排队的命令时发生阻塞。适当地调用引擎通知的回调。当在此调用之前排队的所有命令都从队列中清空时返回。

四、文本转语音程序示范

现在我们已经准备好编写一个将文本转换为语音的示例程序。

# Python program to show
# how to convert text to speech
import pyttsx3  # Initialize the converter
converter = pyttsx3.init()
# Set properties before adding
# Things to say
# Sets speed percent # Can be more than 100
converter.setProperty('rate', 150)
# Set volume 0-1
converter.setProperty('volume', 0.7)
# Queue the entered text
# There will be a pause between
# each one like a pause in
# a sentenceconverter.say("Hello GeeksforGeeks")
converter.say("I'm also a geek")  # Empties the say() queue
# Program will not continue
# until all speech is done talkingconverter.runAndWait()
输出:

上述程序的输出将是一个声音,说“Hello GeeksforGeeks”和“I'm also a geek”。

五、变语速处理

我们将设置发动机的速率和音量。设置讲话的速率和音量:

    rate = engine.getProperty('rate')engine.setProperty('rate', rate-100)

默认情况下,速率是200,所以我们将其降低到100。速率是说话速率,200对我们来说很高。所以我们降低了它。

速率简单来说就是说话者说出文本的速度。设置速率后,我们将通过首先获取音量属性然后设置它来更改或设置音量。

    volume = engine.getProperty('volume')engine.setProperty('volume', volume+0.50)

默认音量为 1,即 100%,我们通过将 0.50 添加到从读取音量属性接收到的值,将其增加到 150%。

现在我们完成了这两个属性的设置,我们将调用 say(),语音现在将具有我们的参数,即 1x 速度和 1.50 音量。

engine.say("Hello, This is the test for the pyttsx3")
engine.runAndWait()

现在这个 runAndWait 对我们来说很重要。我们想要运行这个引擎,并继续运行,直到它完成所传递文本的 TTS。

六、改变声音

假设您想将生成的声音从男性更改为女性。你怎样做呢?让我们来看看。
您会注意到,当您运行上述代码来实现文本到语音转换时,响应的声音是男性声音。要更改语音,您可以通过从引擎获取语音属性来获取可用语音列表,并且您可以根据系统中可用的语音更改语音。

要获取声音列表,请编写以下代码。

voices = converter.getProperty('voices')

 

for voice in voices:

    # to get the info. about various voices in our PC 

    print("Voice:")

    print("ID: %s" %voice.id)

    print("Name: %s" %voice.name)

    print("Age: %s" %voice.age)

    print("Gender: %s" %voice.gender)

    print("Languages Known: %s" %voice.languages)

Output:

要更改语音,请使用 setProperty() 方法设置语音。上面找到的 Voice Id 用于设置语音。
下面是变声的实现。

voice_id = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0"

 

# Use female voice

converter.setProperty('voice', voice_id)

 

converter.runAndWait()

现在,您可以根据需要在声音之间切换。您可以尝试运行 for 循环来将不同的语句分配给不同的声音。运行代码并享受结果。

【NLP】用python实现文本转语音处理相关推荐

  1. 【NLP】Python中文文本聚类

    1. 准备需要进行聚类的文本,这里选取了10篇微博. import os path = 'E:/work/@@@@/开发事宜/大数据平台/5. 标签设计/文本测试数据/微博/' titles = [] ...

  2. 【NLP】GitHub 上有哪些有趣的关于 NLP 的Python项目?

    知乎上有人提问:GitHub 上有哪些有趣的关于 NLP 的Python项目? 先来说说什么是NLP? 自然语言处理(NLP)的重点是使计算机能够理解和处理人类语言.计算机擅长处理结构化数据,如电子表 ...

  3. 如何用python读取文本中指定行的内容

    如何用python读取文本中指定行的内容 搜索资料 我来答 分享 新浪微博 QQ空间 浏览 5284 次 查看全文 http://www.taodudu.cc/news/show-64036.ht ...

  4. 干货 | 请收下这份2018学习清单:150个最好的机器学习,NLP和Python教程

    本文英文出处:Robbie Allen 翻译/雷锋网字幕组 吴楚 校对/ 雷锋网 田晋阳 机器学习的发展可以追溯到1959年,有着丰富的历史.这个领域也正在以前所未有的速度进化.在之前的一篇文章中,我 ...

  5. [硬货]|如何利用深度学习写诗歌(使用Python进行文本生成)

    翻译:李雪冬 前  言 从短篇小说到写5万字的小说,机器不断涌现出前所未有的词汇.在web上有大量的例子可供开发人员使用机器学习来编写文本,呈现的效果有荒谬的也有令人叹为观止的.  由于自然语言处理( ...

  6. 【NLP】Python NLTK 走进大秦帝国

    Python NLTK 走进大秦帝国 作者:白宁超 2016年10月17日18:54:10 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公 ...

  7. python 文本分析_使用Python进行文本分析–书评

    python 文本分析 This is a book review of Text Analytics with Python: A Practical Real-World Approach to ...

  8. 教你如何用Python实现文本摘要模型(附教程)

    翻译 | 和中华 校对 | 申利彬 来源 | 数据派THU(ID:DatapiTHU) 本文介绍了如何利用seq2seq来建立一个文本摘要模型,以及其中的注意力机制.并利用Keras搭建编写了一个完整 ...

  9. NLP(05)_中文文本基本任务与处理

    中文文本基本任务与处理 本文所用资料链接: https://pan.baidu.com/s/1KC1ya38fml1mlXYGBF0mIw 提取码: r76u 1.分词 对于中文和日文这样的特殊亚洲语 ...

最新文章

  1. python应该怎么自学-新手该如何学python怎么学好python?
  2. edittext怎么输入默认内容覆盖_Linux Shell 输入与输出重定向
  3. GIMP - GNU 图像处理程序 用户手册
  4. leetcode 18 --- 4sum
  5. ASP.NET 2.0 调试的一些问题
  6. Pyinstaller使用教程
  7. 在app上查看开发代码
  8. oracle定时任务在哪,oracle定时任务
  9. 牛客网 - 编程初学者入门训练 - 分支控制(BC50~BC77)
  10. 2017届腾讯校园招聘笔试——最后一道编程题
  11. (待优化)python入门
  12. 如何在Jsp页面加载时候就能执行某个方法
  13. 基于服务器部署的OCR在线识别应用
  14. WPS表格取消隐藏行不管用?
  15. 2019年12月7日周总结
  16. 腾讯云服务器带宽按使用流量计费规则(通俗易懂)
  17. 计算机毕设结束语致谢,毕业设计结束语和致谢
  18. CapstoneCS5262设计DP转HDMI4K60Hz+VGA1080P转换电路|DP to hdmi+vga转换器方案设计方法|CS5262Demoboard参考电路
  19. 基于MIPI的高性能成像系统
  20. 淘宝助理导出CSV文件特殊字段详解

热门文章

  1. Alternate Realities大赛作品引发的思考(一)——用通俗的语言解释shader的渲染过程
  2. 基于Ubuntu系统的tensorflow安卓官方demo移植(19年7月)
  3. 云原生热门话题|什么是可观测性-Observability
  4. pwm 正弦波_正弦波滤波器的原理及应用,LC滤波器与LCL滤波器的区别?
  5. BugkuCTF web game1
  6. uniapp 中 editor的使用
  7. windows 下编译64位的 Boost 1. 61. 0
  8. 简析:SMT贴片加工的流程有哪些?
  9. edis面试刁难大全
  10. 【python】抛出异常