• 如何用Python让你的电脑说话


    如何用Python让你的电脑说话 你成为亿万花花公子的第一步

    如果你是像《钢铁侠》这样的电影的粉丝,你可能已经幻想过得到你自己的贾维斯。那么,在这篇文章中,我将告诉你如何开始制作你自己的电脑助手。我们将通过一个小的编程和一些聪明的python包在引擎盖下进行数据科学。

    现在,制作像超级智能人工智能这样复杂的东西是很难的,对于我来说,在一篇文章中甚至很可能在一般情况下都很难做到。然而,我们可以做的是把这个问题分解成更小的部分,使问题看起来更容易。这是你在每一个项目中都应该做的事情,这样就不会一下子被其所有的复杂性所困住了。

    从我对这个问题的简单思考来看,我相信我们可以把一个超级智能的人工智能助手分成四个主要部分。

    文本到语音(以获得回应) 语音转文字(用于询问事情) 一些计算,以了解我们的问题并创建一个响应 将回应变成现实世界中的行动 在今天的文章中,我将专注于计算机助手的文本到语音方面,让我们的计算机与我们交谈。如果一切顺利的话,我将在今后的文章中继续发展,使我们的助手变得更加复杂和有用。

    找到一个文本到语音库 现在,用python做这样的事情有一个巨大的好处,那就是我们有大量的库可以使用,以快速完成事情。毕竟,如果我们从头开始开发其中的每一个部分,我们会在这里呆很久,以至于我们永远不会完成任何事情。让我们站在巨人的肩膀上,使用python软件包。

    对于文本到语音来说,有几个Python包在人群中脱颖而出。

    谷歌文本转语音(gTTs),以及 pyttsx3(我不知道那到底代表什么)。 谷歌文本转语音是一个Python库,用于连接谷歌翻译的文本转语音API。它具有谷歌自己的文本到语音应用程序的性能,但需要互联网连接才能使用。

    另一方面,pyttsx3是一个文本到语音的转换库,它寻找预装在你的平台上的文本到语音引擎并使用它们。因此,它可以离线工作。

    以下是它在主要操作系统上使用的文本转语音引擎。

    Windows上的SAPI5 2. MacOSX上的NSSpeechSynthesizer

    3.其他所有平台上的espeak

    看看这两个,我不希望我的助手依赖谷歌或在线连接来工作。我更愿意使用pyttsx3,让一切都在我自己的机器上运行。

    设置项目 现在,在我们开始运行一切之前,让我们设置我们的项目。

    我们将通过文本编辑器和终端来完成一切。如果你不知道这意味着什么,那么我向人们推荐的文本编辑器是vscode,而终端通常内置在你的文本编辑器中(如vscode),或者是你电脑上的一个叫做 "终端 "或 "cmd "的程序。

    现在,我想让你打开你的终端,改变目录到你保存项目的地方,例如,用

    cd ~/projects
    • 1

    接下来,我们将需要创建一个目录来存储我们的项目。这完全取决于你,但我希望我的助手叫罗伯特。因此,我将创建一个名为 "robert "的新目录,然后用以下方式进入该目录

    mkdir robert
    cd robert
    • 1

    你可以把这个名字改成你喜欢的样子,比如说Brandy或者Kumar之类的。

    接下来,我们需要让python启动并运行。为此,我们将需要安装Python 3。如果你没有安装,请参阅https://www.python.org/,了解安装说明。我们还需要创建一个Python虚拟环境。如果你想了解更多这方面的信息,请看这里,我最近的一篇文章。

    假设你已经安装了Python,你可以在终端用以下方法验证

    python3 --version
    • 1

    现在你应该能够在你的robert目录下创建你的python虚拟环境了。

    python3 -m venv venv
    • 1

    注意,如果你安装的python的版本是python,python3.7或者python3.9或者其他的,那么就使用这个版本。

    然后你应该能够用以下方法激活你的虚拟环境。

    (在MacOS和Linux上)

    source venv/bin/activate 或 (Windows)

    venv/Scripts/activate
    • 1

    现在我们需要安装我们需要的软件包。为了做到这一点,我们将创建一个requirements.txt文件。进入你最喜欢的文本编辑器,例如vscode,或者,如果你很冒险的话,vim,打开你的 "robert "文件夹,现在创建这个文件。

    对于我们的项目,到目前为止,我们只需要pyttsx3。很简单。让我们现在把它添加到我们的requirements.txt文件中,如下所示

    接下来,让我们用pip来安装我们的需求

    pip install -r requirements.txt
    • 1

    使用pyttsx3

    现在一切都安装好了,让我们开始使用pyttsx3。为了了解该怎么做,我查看了这里的文档。

    然后,你可以通过创建一个名为speech.py的文件并添加以下代码来制作一个漂亮的例子。

    import pyttsx3

    engine = pyttsx3.init()

    voice_num = 2
    text_to_say = "Hello World! I am Robert!"

    voices = engine.getProperty('voices')
    engine.setProperty('voice', voices[voice_num].id)

    engine.say(text_to_say)
    engine.runAndWait()
    • 1

    我们首先导入pyttsx3以加载其所有的类和变量。然后我们初始化语音引擎,设置一个我们想要的声音,然后是我们想要说的文字。最后我们使用engine.runAndWait()来说话。

    然后我们可以在终端用下面的命令运行这个文件。

    python speech.py
    • 1

    玩一玩这个,改变text_to_say变量。你应该能说出任何你喜欢的东西。

    酷!调整声音和速度

    现在我们有了一些工作,让我们给我们的助手一些调整。Pyttsx3让我们调整声音和速度。

    import pyttsx3

    engine = pyttsx3.init()

    # change voice

    # getting details of current voice
    voices = engine.getProperty('voices')      

    for i in range(len(voices)):
        engine.setProperty('voice', voices[i].id)
        # say something
        engine.say("Pick me, pick me! My voice is number " + str(i))
        engine.runAndWait()
    • 1

    在上面的例子中,你可以改变声音_num到一个不同的数字来获得一个新的声音。从我的测试来看,这似乎取决于平台(可能取决于你的平台有SAPI5,NSSpeechSynthesizer或espeak)。

    我创建了这个怪物般的文件(当很多机器人的声音用奇怪的口音和你说话时,你就会明白为什么),以帮助你决定什么声音最适合你。一旦你找到了你喜欢的声音号码,把这个号码换成在voice_num变量中找到的号码。

    接下来的步骤

    恭喜你达到了终点。如果你有任何问题或只是想打招呼,请在下面发表。

    如果你想进一步阅读,我建议你查看下面的链接,并在即将到来的文章中获得先机。

    https://www.geeksforgeeks.org/python-text-to-speech-by-using-pyttsx3/

    https://realpython.com/python-speech-recognition/

    对于我的下一篇文章,我将专注于语音转文字,这样我们的助手就可以对我们的命令作出回应🤖。给我一个关注,以确保你不会错过它。

    本文由 mdnice 多平台发布

  • 相关阅读:
    如何利用niceGUI构建一个流式单轮对话界面
    介绍Vue router的history模式以及如何配置history模式
    Redis-String特点和操作-20220730
    Java框架-SpringMVC(基础使用+运行流程+拦截器+统一异常处理等详解)
    Spring学习篇(三)
    淘宝战场分离,淘宝商家跻身抖音电商,是自掘坟墓还是另有他法?
    【Linux】多线程基础
    vue2使用change事件监听不了回车事件的问题
    Windows配置SonarQube代码审查工具详细步骤(附带IDEA SonarLint插件使用)
    Spring Boot中Spring MVC的基本配置讲解与实战(包括静态资源配置,拦截器配置,文件上传配置及实战 附源码)
  • 原文地址:https://blog.csdn.net/qq_40523298/article/details/127766068