iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现语音合成小工具
  • 822
分享到

Python如何实现语音合成小工具

2023-07-04 17:07:16 822人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python如何实现语音合成小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何实现语音合成小工具”吧!TTS简介TTS(Text To Speech)是

这篇文章主要讲解了“python如何实现语音合成小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何实现语音合成小工具”吧!

    TTS简介

    TTS(Text To Speech)是一种语音合成技术,可以让机器将输入文本以语音的方式播放出来,实现机器说话的效果。

    TTS分成语音处理及语音合成,先由机器识别输入的文字,再根据语音库进行语音合成。现在有很多可供调用的TTS接口,比如百度智能云的语音合成接口。微软在windows系统中也提供了TTS的接口,可以调用此接口实现离线的TTS语音合成功能。

    本文将使用pyttsx3库作为示范,编写一个语音合成小工具。

    安装需要的包

    安装PyQt5及其GUI设计工具

    # 安装PyQt5pip install PyQt5 # 安装PyQt5设计器pip install PyQt5Designer

    本文使用的编辑器是vscode,不是PyCharm,使用PyQt5的方式可能存在差异,具体使用时可以根据实际情况进行配置。 

    安装pyttsx3

    pip install pyttsx3

    UI界面 

    可参考下图设计简单的GUI界面,由于本文主要为功能实例,故不考虑界面美观问题。

    Python如何实现语音合成小工具

    界面应有一个文本输入框,用以输入将要转化为语音的文本,同时需要一个播放按钮,用以触发语音播放的方法。语速、音量和语言可以按需选择。 

    使用PyQt5的设计工具,可以根据以上配置的GUI界面生成以下UI(XML)代码:

    <?xml version="1.0" encoding="UTF-8"?><ui version="4.0"> <class>FORM</class> <widget class="QWidget" name="Form">  <property name="geometry">   <rect>    <x>0</x>    <y>0</y>    <width>313</width>    <height>284</height>   </rect>  </property>  <property name="windowTitle">   <string>语音合成器</string>  </property>  <property name="windowIcon">   <iconset>    <normaloff>voice.ico</normaloff>voice.ico</iconset>  </property>  <widget class="QWidget" name="verticalLayoutWidget">   <property name="geometry">    <rect>     <x>10</x>     <y>10</y>     <width>291</width>     <height>261</height>    </rect>   </property>   <layout class="QVBoxLayout" name="verticalLayout">    <property name="spacing">     <number>20</number>    </property>    <item>     <layout class="QHBoxLayout" name="horizontalLayout_2">      <item>       <widget class="QLabel" name="label">        <property name="text">         <string>播报文本</string>        </property>        <property name="alignment">         <set>Qt::AlignJustify|Qt::AlignTop</set>        </property>       </widget>      </item>      <item>       <widget class="QTextEdit" name="tbx_text"/>      </item>     </layout>    </item>    <item>     <layout class="QHBoxLayout" name="horizontalLayout_4">      <item>       <widget class="QLabel" name="label_3">        <property name="text">         <string>语速</string>        </property>       </widget>      </item>      <item>       <widget class="QSlider" name="slider_rate">        <property name="maximum">         <number>300</number>        </property>        <property name="orientation">         <enum>Qt::Horizontal</enum>        </property>       </widget>      </item>      <item>       <widget class="QLabel" name="label_rate">        <property name="minimumSize">         <size>          <width>30</width>          <height>0</height>         </size>        </property>        <property name="text">         <string>0</string>        </property>        <property name="alignment">         <set>Qt::AlignCenter</set>        </property>       </widget>      </item>     </layout>    </item>    <item>     <layout class="QHBoxLayout" name="horizontalLayout_3">      <item>       <widget class="QLabel" name="label_2">        <property name="text">         <string>音量</string>        </property>       </widget>      </item>      <item>       <widget class="QSlider" name="slider_volumn">        <property name="maximum">         <number>100</number>        </property>        <property name="orientation">         <enum>Qt::Horizontal</enum>        </property>       </widget>      </item>      <item>       <widget class="QLabel" name="label_volumn">        <property name="minimumSize">         <size>          <width>30</width>          <height>0</height>         </size>        </property>        <property name="text">         <string>0</string>        </property>        <property name="alignment">         <set>Qt::AlignCenter</set>        </property>       </widget>      </item>     </layout>    </item>    <item>     <layout class="QHBoxLayout" name="horizontalLayout">      <item>       <widget class="QLabel" name="label_4">        <property name="text">         <string>选择语言</string>        </property>       </widget>      </item>      <item>       <widget class="QRadioButton" name="rbtn_zh">        <property name="text">         <string>中文</string>        </property>        <property name="checked">         <bool>true</bool>        </property>       </widget>      </item>      <item>       <widget class="QRadioButton" name="rbtn_en">        <property name="text">         <string>英文</string>        </property>       </widget>      </item>     </layout>    </item>    <item>     <layout class="QHBoxLayout" name="horizontalLayout_5">      <item>       <widget class="QLabel" name="label_5">        <property name="minimumSize">         <size>          <width>60</width>          <height>0</height>         </size>        </property>        <property name="text">         <string/>        </property>       </widget>      </item>      <item>       <widget class="QPushButton" name="btn_play">        <property name="minimumSize">         <size>          <width>0</width>          <height>30</height>         </size>        </property>        <property name="text">         <string>播放</string>        </property>       </widget>      </item>     </layout>    </item>   </layout>  </widget> </widget> <resources/> <connections/></ui>

    最后再使用PyQt5的界面工具,可以根据以上UI的代码,生成以下的窗体类:

    # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'd:\Program\VSCode\Python\TTS_PyQT\tts_form.ui'## Created by: PyQt5 UI code generator 5.15.7## WARNING: Any manual changes made to this file will be lost when pyuic5 is# run again.  Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets  class Ui_Form(object):     def setupUi(self, Form):        Form.setObjectName("Form")        Form.resize(313, 284)        icon = QtGui.QIcon()        icon.addPixmap(            QtGui.QPixmap("./voice.ico"),            QtGui.QIcon.Normal, QtGui.QIcon.Off)        Form.setWindowIcon(icon)        self.verticalLayoutWidget = QtWidgets.QWidget(Form)        self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 291, 261))        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)        self.verticalLayout.setContentsMargins(0, 0, 0, 0)        self.verticalLayout.setSpacing(20)        self.verticalLayout.setObjectName("verticalLayout")        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()        self.horizontalLayout_2.setObjectName("horizontalLayout_2")        self.label = QtWidgets.QLabel(self.verticalLayoutWidget)        self.label.setAlignment(QtCore.Qt.AlignJustify | QtCore.Qt.AlignTop)        self.label.setObjectName("label")        self.horizontalLayout_2.addWidget(self.label)        self.tbx_text = QtWidgets.QTextEdit(self.verticalLayoutWidget)        self.tbx_text.setObjectName("tbx_text")        self.horizontalLayout_2.addWidget(self.tbx_text)        self.verticalLayout.addLayout(self.horizontalLayout_2)        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()        self.horizontalLayout_4.setObjectName("horizontalLayout_4")        self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget)        self.label_3.setObjectName("label_3")        self.horizontalLayout_4.addWidget(self.label_3)        self.slider_rate = QtWidgets.QSlider(self.verticalLayoutWidget)        self.slider_rate.setMaximum(300)        self.slider_rate.setOrientation(QtCore.Qt.Horizontal)        self.slider_rate.setObjectName("slider_rate")        self.horizontalLayout_4.addWidget(self.slider_rate)        self.label_rate = QtWidgets.QLabel(self.verticalLayoutWidget)        self.label_rate.setMinimumSize(QtCore.QSize(30, 0))        self.label_rate.setAlignment(QtCore.Qt.AlignCenter)        self.label_rate.setObjectName("label_rate")        self.horizontalLayout_4.addWidget(self.label_rate)        self.verticalLayout.addLayout(self.horizontalLayout_4)        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()        self.horizontalLayout_3.setObjectName("horizontalLayout_3")        self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget)        self.label_2.setObjectName("label_2")        self.horizontalLayout_3.addWidget(self.label_2)        self.slider_volumn = QtWidgets.QSlider(self.verticalLayoutWidget)        self.slider_volumn.setMaximum(100)        self.slider_volumn.setOrientation(QtCore.Qt.Horizontal)        self.slider_volumn.setObjectName("slider_volumn")        self.horizontalLayout_3.addWidget(self.slider_volumn)        self.label_volumn = QtWidgets.QLabel(self.verticalLayoutWidget)        self.label_volumn.setMinimumSize(QtCore.QSize(30, 0))        self.label_volumn.setAlignment(QtCore.Qt.AlignCenter)        self.label_volumn.setObjectName("label_volumn")        self.horizontalLayout_3.addWidget(self.label_volumn)        self.verticalLayout.addLayout(self.horizontalLayout_3)        self.horizontalLayout = QtWidgets.QHBoxLayout()        self.horizontalLayout.setObjectName("horizontalLayout")        self.label_4 = QtWidgets.QLabel(self.verticalLayoutWidget)        self.label_4.setObjectName("label_4")        self.horizontalLayout.addWidget(self.label_4)        self.rbtn_zh = QtWidgets.QRadioButton(self.verticalLayoutWidget)        self.rbtn_zh.setChecked(True)        self.rbtn_zh.setObjectName("rbtn_zh")        self.horizontalLayout.addWidget(self.rbtn_zh)        self.rbtn_en = QtWidgets.QRadioButton(self.verticalLayoutWidget)        self.rbtn_en.setObjectName("rbtn_en")        self.horizontalLayout.addWidget(self.rbtn_en)        self.verticalLayout.addLayout(self.horizontalLayout)        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()        self.horizontalLayout_5.setObjectName("horizontalLayout_5")        self.label_5 = QtWidgets.QLabel(self.verticalLayoutWidget)        self.label_5.setMinimumSize(QtCore.QSize(60, 0))        self.label_5.setText("")        self.label_5.setObjectName("label_5")        self.horizontalLayout_5.addWidget(self.label_5)        self.btn_play = QtWidgets.QPushButton(self.verticalLayoutWidget)        self.btn_play.setMinimumSize(QtCore.QSize(0, 30))        self.btn_play.setObjectName("btn_play")        self.horizontalLayout_5.addWidget(self.btn_play)        self.verticalLayout.addLayout(self.horizontalLayout_5)         self.retranslateUi(Form)        QtCore.QMetaObject.connectSlotsByName(Form)     def retranslateUi(self, Form):        _translate = QtCore.QCoreApplication.translate        Form.setWindowTitle(_translate("Form", "语音合成器"))        self.label.setText(_translate("Form", "播报文本"))        self.label_3.setText(_translate("Form", "语速"))        self.label_rate.setText(_translate("Form", "0"))        self.label_2.setText(_translate("Form", "音量"))        self.label_volumn.setText(_translate("Form", "0"))        self.label_4.setText(_translate("Form", "选择语言"))        self.rbtn_zh.setText(_translate("Form", "中文"))        self.rbtn_en.setText(_translate("Form", "英文"))        self.btn_play.setText(_translate("Form", "播放"))

    如果直接复制此代码,可能会出现图标丢失的问题。这个需要根据实际情况修改icon的配置,并添加要使用的ico图标文件。 

    功能代码

    语音工具类

    首先我们需要初始化并获取语音合成用的语音引擎对象。

    # tts对象engine = pyttsx3.init()

    我们可以通过该对象的setProperty方法,对语音合成的对象的属性进行修改:

    属性名解释
    rate以每分钟字数表示的整数语速
    volume音量,取值范围为[0.0, 1.0]
    voices语音的字符串标识符

    语音工具类代码如下,代码含义可参考注释:

    import pyttsx3  class VoiceEngine():    '''    tts 语音工具类    '''     def __init__(self):        '''        初始化        '''        # tts对象        self.__engine = pyttsx3.init()        # 语速        self.__rate = 150        # 音量        self.__volume = 100        # 语音ID,0为中文,1为英文        self.__voice = 0     @property    def Rate(self):        '''        语速属性        '''        return self.__rate     @Rate.setter    def Rate(self, value):        self.__rate = value     @property    def Volume(self):        '''        音量属性        '''        return self.__volume     @Volume.setter    def Volume(self, value):        self.__volume = value     @property    def VoiceID(self):        '''        语音ID:0 -- 中文;1 -- 英文        '''         return self.__voice     @VoiceID.setter    def VoiceID(self, value):        self.__voice = value     def Say(self, text):        '''        播放语音        '''        self.__engine.setProperty('rate', self.__rate)        self.__engine.setProperty('volume', self.__volume)         # 获取可用语音列表,并设置语音        voices = self.__engine.getProperty('voices')        self.__engine.setProperty('voice', voices[self.__voice].id)         # 保存语音文件        # self.__engine.save_to_file(text, 'test.mp3')         self.__engine.say(text)        self.__engine.runAndWait()        self.__engine.stop()

    窗体类

    我们可以创建一个继承于我们刚刚创建的PyQt5的窗体类,并为窗体的拖拽事件和点击事件注册回调函数,同时创建一个语音工具类的实例,用以实现指定事件触发时需要执行的语音操作。

    import sysimport _thread as thfrom PyQt5.QtWidgets import QMainWindow, QApplicationfrom Ui_tts_form import Ui_Form class MainWindow(QMainWindow, Ui_Form):    '''    窗体类    '''     def __init__(self, parent=None):        '''        初始化窗体        '''        super(MainWindow, self).__init__(parent)        self.setupUi(self)         # 获取tts工具类实例        self.engine = VoiceEngine()        self.__isPlaying = False         # 设置初始文本        self.tbx_text.setText('床前明月光,疑似地上霜。\n举头望明月,低头思故乡。')         # 进度条数据绑定到label中显示        self.slider_rate.valueChanged.connect(self.setRateTextValue)        self.slider_volumn.valueChanged.connect(self.setVolumnTextValue)         # 设置进度条初始值        self.slider_rate.setValue(self.engine.Rate)        self.slider_volumn.setValue(self.engine.Volume)         # RadioButton选择事件        self.rbtn_zh.toggled.connect(self.onSelectVoice_zh)        self.rbtn_en.toggled.connect(self.onSelectVoice_en)         # 播放按钮点击事件        self.btn_play.clicked.connect(self.onPlayButtonClick)     def setRateTextValue(self):        '''        修改语速label文本值        '''        value = self.slider_rate.value()        self.label_rate.setText(str(value))        self.engine.Rate = value     def setVolumnTextValue(self):        '''        修改音量label文本值        '''        value = self.slider_volumn.value()        self.label_volumn.setText(str(value / 100))        self.engine.Volume = value     def onSelectVoice_zh(self):        '''        修改中文的语音配置及默认播放文本        '''        self.tbx_text.setText('床前明月光,疑似地上霜。\n举头望明月,低头思故乡。')        self.engine.VoiceID = 0     def onSelectVoice_en(self):        '''        修改英文的语音配置及默认的播放文本        '''        self.tbx_text.setText('Hello World')        self.engine.VoiceID = 1     def playVoice(self):        '''        播放        '''         if self.__isPlaying is not True:            self.__isPlaying = True            text = self.tbx_text.toPlainText()            self.engine.Say(text)            self.__isPlaying = False     def onPlayButtonClick(self):        '''        播放按钮点击事件        开启线程新线程播放语音,避免窗体因为语音播放而假卡死        '''        th.start_new_thread(self.playVoice, ())

    完整代码

    import sysimport _thread as thfrom PyQt5.QtWidgets import QMainWindow, QApplicationfrom Ui_tts_form import Ui_Formimport pyttsx3  class VoiceEngine():    '''    tts 语音工具类    '''     def __init__(self):        '''        初始化        '''        # tts对象        self.__engine = pyttsx3.init()        # 语速        self.__rate = 150        # 音量        self.__volume = 100        # 语音ID,0为中文,1为英文        self.__voice = 0     @property    def Rate(self):        '''        语速属性        '''        return self.__rate     @Rate.setter    def Rate(self, value):        self.__rate = value     @property    def Volume(self):        '''        音量属性        '''        return self.__volume     @Volume.setter    def Volume(self, value):        self.__volume = value     @property    def VoiceID(self):        '''        语音ID:0 -- 中文;1 -- 英文        '''         return self.__voice     @VoiceID.setter    def VoiceID(self, value):        self.__voice = value     def Say(self, text):        '''        播放语音        '''        self.__engine.setProperty('rate', self.__rate)        self.__engine.setProperty('volume', self.__volume)        voices = self.__engine.getProperty('voices')        self.__engine.setProperty('voice', voices[self.__voice])         # 保存语音文件        # self.__engine.save_to_file(text, 'test.mp3')         self.__engine.say(text)        self.__engine.runAndWait()        self.__engine.stop()  class MainWindow(QMainWindow, Ui_Form):    '''    窗体类    '''     def __init__(self, parent=None):        '''        初始化窗体        '''        super(MainWindow, self).__init__(parent)        self.setupUi(self)         # 获取tts工具类实例        self.engine = VoiceEngine()        self.__isPlaying = False         # 设置初始文本        self.tbx_text.setText('床前明月光,疑似地上霜。\n举头望明月,低头思故乡。')         # 进度条数据绑定到label中显示        self.slider_rate.valueChanged.connect(self.setRateTextValue)        self.slider_volumn.valueChanged.connect(self.setVolumnTextValue)         # 设置进度条初始值        self.slider_rate.setValue(self.engine.Rate)        self.slider_volumn.setValue(self.engine.Volume)         # RadioButton选择事件        self.rbtn_zh.toggled.connect(self.onSelectVoice_zh)        self.rbtn_en.toggled.connect(self.onSelectVoice_en)         # 播放按钮点击事件        self.btn_play.clicked.connect(self.onPlayButtonClick)     def setRateTextValue(self):        '''        修改语速label文本值        '''        value = self.slider_rate.value()        self.label_rate.setText(str(value))        self.engine.Rate = value     def setVolumnTextValue(self):        '''        修改音量label文本值        '''        value = self.slider_volumn.value()        self.label_volumn.setText(str(value / 100))        self.engine.Volume = value     def onSelectVoice_zh(self):        '''        修改中文的语音配置及默认播放文本        '''        self.tbx_text.setText('床前明月光,疑似地上霜。\n举头望明月,低头思故乡。')        self.engine.VoiceID = 0     def onSelectVoice_en(self):        '''        修改英文的语音配置及默认的播放文本        '''        self.tbx_text.setText('Hello World')        self.engine.VoiceID = 1     def playVoice(self):        '''        播放        '''         if self.__isPlaying is not True:            self.__isPlaying = True            text = self.tbx_text.toPlainText()            self.engine.Say(text)            self.__isPlaying = False     def onPlayButtonClick(self):        '''        修改语速label文本值        '''        th.start_new_thread(self.playVoice, ())  if __name__ == "__main__":    '''    主函数    '''    app = QApplication(sys.argv)    form = MainWindow()    form.show()    sys.exit(app.exec_())

    感谢各位的阅读,以上就是“Python如何实现语音合成小工具”的内容了,经过本文的学习后,相信大家对Python如何实现语音合成小工具这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: Python如何实现语音合成小工具

    本文链接: https://www.lsjlt.com/news/346605.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python如何实现语音合成小工具
      这篇文章主要讲解了“Python如何实现语音合成小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何实现语音合成小工具”吧!TTS简介TTS(Text To Speech)是...
      99+
      2023-07-04
    • Python人工智能语音合成功能怎么实现
      今天小编给大家分享一下Python人工智能语音合成功能怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、 注册百度A...
      99+
      2023-07-05
    • Python人工智能语音合成实现案例详解
      目录正文一、 注册百度AI平台应用二、 编写Python代码正文 今天给大家介绍一下基于百度的AI语音技术SDK实现语音合成的案例,编程语言采用Python,希望对大家能有所帮助...
      99+
      2023-03-21
      Python人工智能语音合成 Python人工智能
    • 语音合成工具Coqui TTS安装及体验
      先介绍两种免费的语音合成工具 balabolka 官网 http://balabolka.site/balabolka.htm 是一种基于微软Speech API (SAPI)的免费语音合成工具,只是...
      99+
      2023-09-30
      python 语音合成
    • Python实现语音合成功能详解
      目录导语1.直接使用2. 获取权限2.1 环境准备:2.2 获取权限3. 代码实现3.1 获取access_token3.2 获取转换后音频3.3 配置接口参数3.4 完整demo3...
      99+
      2024-04-02
    • 如何在PHP中实现语音识别和合成?
      随着人工智能技术的不断发展,语音识别和合成功能已经成为了当下越来越流行的技术之一,而PHP语言在Web开发中也是一种被广泛使用的编程语言。本文将介绍如何在PHP中实现语音识别和合成功能。一、语音识别语音识别指的是将语音转换成文本的过程,许多...
      99+
      2023-05-14
      语音识别 语音合成 PHP语言
    • Python如何实现视频中添加音频工具
      这篇文章主要介绍Python如何实现视频中添加音频工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!环境依赖ffmpeg环境安装,可以参考:windows ffmpeg安装部署ffmpy安装:pip ins...
      99+
      2023-06-21
    • Java工具类如何实现音频音量提升
      这篇文章给大家分享的是有关Java工具类如何实现音频音量提升的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Maven依赖<dependency>    &nbs...
      99+
      2023-06-21
    • Python实现MySQL DBA小工具
        我们知道MySQL所有的运行状态统计信息都能从“show global status”语句的结果集中查看,该结果集保存的是从MySQL启动到当前时间之间各状态值的“总数”,对我们的分析不友好。在我们日常维护和优化中,我们需要持续的跟踪某...
      99+
      2023-01-31
      小工具 Python MySQL
    • vue和express如何合成语音
      本篇内容主要讲解“vue和express如何合成语音”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue和express如何合成语音”吧!一、Vue框架Vue是一个非常流行的前端框架,它会在页面...
      99+
      2023-07-06
    • 微信小程序语音识别与合成怎么实现
      这篇文章主要介绍了微信小程序语音识别与合成怎么实现 的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序语音识别与合成怎么实现 文章都会有所收获,下面我们一起来看看吧。先叙述下原理:利用微信小程序api,录...
      99+
      2023-06-26
    • Python实现翻译小工具
      一、背景利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。 二、代码git源码地址Python实现翻译小工具 fanyi.py代码如下: #!/...
      99+
      2023-01-31
      小工具 Python
    • Python调用讯飞语音合成API接口来实现文字转语音
      目录准备工作发送请求格式转换pydubFFmpeg准备工作 在编写代码和调用API之前,首先需要准备好以下项: 讯飞开放平台账户:用户可以免费注册讯飞开放平台,并创建应用程序,以获得...
      99+
      2023-05-17
      Python实现文字转语音 Python调用讯飞语音合成API接口
    • Java如何实现截图小工具
      这篇文章主要介绍“Java如何实现截图小工具”,在日常操作中,相信很多人在Java如何实现截图小工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现截图小工具”的疑惑有所帮助!接下来,请跟着小编...
      99+
      2023-06-30
    • Python语音合成的项目实战(PyQt5+pyttsx3)
      目录TTS简介安装需要的包UI界面 功能代码语音工具类窗体类完整代码TTS简介 TTS(Text To Speech)是一种语音合成技术,可以让机器将输入文本以语音的方式播...
      99+
      2023-02-08
      Python语音合成 PyQt5 pyttsx3语音合成
    • 基于Python如何实现视频去重小工具
      这篇文章主要介绍“基于Python如何实现视频去重小工具”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Python如何实现视频去重小工具”文章能帮助大家解决问题。同级目录下新建dup_video...
      99+
      2023-07-05
    • Java怎么实现文字转语音工具箱
      本篇内容主要讲解“Java怎么实现文字转语音工具箱”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么实现文字转语音工具箱”吧!整合这里我们使用百度云的人工智能语音合成API,个人用户拥有...
      99+
      2023-06-03
    • Python如何实现扫码工具
      这篇文章主要为大家展示了“Python如何实现扫码工具”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python如何实现扫码工具”这篇文章吧。一、案例分析我们先思考一下,实现扫码工具需要写什么操...
      99+
      2023-06-15
    • 如何使用Python实现视频去重的小工具
      同级目录下新建dup_videoimport json import os import shutil import cv2 import imagehash from PIL import Image from loguru impor...
      99+
      2023-05-14
      Python
    • [python小工具]实现屏幕录制
        用python实现屏幕录制 PIL 即pollow 的安装命令如下: pip install pillow 其中cv2的安装是下面这条命令 pip install opencv-python #python + opencv 实...
      99+
      2023-01-31
      小工具 屏幕 python
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作