python文字转语音(pyttsx3+flask)

提示:文章结尾有全部代码

目录

  • 前言
  • 一、Flask+pyttsx基本使用
    • Flask
      • 导入Flask框架
      • 配置基础环境
      • 初始Flask代码
    • pyttsx3库基本使用
      • 导入pyttsx3
      • 初始化pyttsx3
      • 文字转语音
      • 运行
  • 二、具体实现
    • 1.引入库
  • 总结


前言

本文主要讲解如何用python的pyttsx3库+flask框架,手写一个文字转语音api
准备工作
编译器:vscode
pip下载:pyttsx3、flask(跨域再下载一个flask_cors)


一、Flask+pyttsx基本使用

Flask

Flask是python的一个轻量级框架,适用于小微项目的创作,在下载完Flask框架后,先配置它的主路径
在终端中输入以下命令:

$env:Flask_APP="你的主函数py文件本地路径"

导入Flask框架

from flask import Flask,request

在上述代码中,导入Flask框架和request请求。

配置基础环境

app=Flask(__name__)
中间写路由api
if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=5000)

在最后一行代码中,我们关闭了debug模式,并且host设置成0.0.0.0能实现所有ip地址都能调用该接口,如果不想也可以在终端输入ipconfig/all,查看自己的ip地址并放上去,port是端口号,没被占用的情况下可以随意修改。

初始Flask代码

from flask import Flask

app=Flask(__name__)

.route('/')
def test():
    return "hello"

if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=5000)

@app.route是路由,里面写的是具体接口名,def是函数关键词,在这个接口中,我们只做了返回hello字符串的操作。

pyttsx3库基本使用

导入pyttsx3

import pyttsx3

初始化pyttsx3

e=pyttsx3.init()

e是别名,能调用初始化后的这个库里的函数,如say,runAndWait等等。

文字转语音

e.say('世界真大,我想去看看')

say主要作用就是说,把里面的文字转成语音

运行

e.runAndWait()

runAndWait主要作用就是运行这个库中调用的函数,如say。

import pyttsx3

e=pyttsx3.init()

e.say('123')

e.runAndWait()

二、具体实现

1.引入库

from flask import Flask, request
import pyttsx3
from flask_cors import CORS, cross_origin

app = Flask(__name__)

CORS(app)

# 输入表单文字转语音
.route('/tts', methods=["POST"])
()
def text_audio():
    engine = pyttsx3.init()
    # 获取请求的text表单数据
    text = request.form.get('text')
    # 如果存在转语音并运行pyttsx3
    if text:
        engine.say(text)
        engine.runAndWait()
        return "Text Success"
    else:
        # 不存在返回Text is empty
        return "Text is empty"
    
# 主函数,host任何IP地址都可以运行,debug模式关闭
if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=5000)

在上述代码中,关键点在于用request方法的表单实现参数,这一点需要在header头是表单类型,也就是

Content-Type:application/x-www-form-urlencoded

在postman的body中找到application/x-www-form-urlencoded,key是text,value就可以输入你想要转语音的文字了.
其次就是跨域的应用,需要下载flask_cors,并配置对应的CORS(app),在你想要跨域的接口前输入@cross_origin()
就可以实现跨域的操作了.
在这里插入图片描述


总结

这是比较简单的实现文字转语音的方法,实现效果也是机器声音较重,如果想要模拟人声也可以采用机器学习的方式,用tacotron2模型进行训练,开源代码在github中可以看到.
同时pyttsx也能实现读取文本文件,将文本文件转换成mp3的功能,可以自行去官方文档搜索查阅.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有了IP地址,还需要MAC地址嘛?二选一可否?

概要 在计算机网络中,IP地址和MAC地址是两个最基本的概念。IP地址在互联网中是用于标识主机的逻辑地址,而MAC地址则是用于标识网卡的物理地址。虽然它们都是用于标识一个设备的地址,但是它们的作用和使用场景是不同的。 IP地址是在网络层&am…

数据结构之树与二叉树——算法与数据结构入门笔记(五)

本文是算法与数据结构的学习笔记第五篇,将持续更新,欢迎小伙伴们阅读学习。有不懂的或错误的地方,欢迎交流 引言 前面章节介绍的都是线性存储的数据结构,包括数组、链表、栈、队列。本节带大家学习一种非线性存储的数据结构&…

chatgpt赋能python:Python分词:从原理到实践

Python分词:从原理到实践 分词是自然语言处理中的关键步骤之一,它是指将一句话或一段文本分成若干个词语(token)并进行标注。Python作为一种非常流行的编程语言,具备强大的文本处理能力,而分词也是它的强项…

chatgpt赋能python:Python如何切换中文

Python 如何切换中文 Python 是一种广泛使用的编程语言,被用于多种目的,包括数据分析、机器学习、Web 应用程序等。在使用 Python 进行开发时,需要处理不同的语言,其中中文也是包括在内的。对于需要切换中文的情况,本…

学生考试作弊检测系统 yolov8

学生考试作弊检测系统采用yolov8网络模型人工智能技术,学生考试作弊检测系统过在考场中安装监控设备,对学生的作弊行为进行实时监测。当学生出现作弊行为时,学生考试作弊检测系统将自动识别并记录信息。YOLOv8 算法的核心特性和改动可以归结为…

关于数据生成二维码保存和解密删除二维码

文章目录 前言一、pom配置依赖二、文件引入1.BufferedImageLuminanceSource2.QRCodeUtil3.MyPicConfig4.UploadUtils三、测试前言 所需文件: MyPicConfig 主要解决上传图片实时刷新BufferedImageLuminanceSource 算法文件QRCodeUtil 生成二维码工具类UploadUtils 主要解决上传…

软考A计划-系统架构师-官方考试指定教程-(13/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

【Java基础学习打卡03】计算机中数据的表示、存储与处理

目录 前言一、数据的表示1.数据与信息2.计算机中的数据3.计算机中数据的单位 二、数据的存储三、数据的处理1.进位计数值2.进制间转换 四、字符编码总结 前言 本小节主要介绍在计算机中数据的表示、存储与处理。要知道计算机内部使用二进制数据,也就是0和1组成的数…

2.3 YARN伪分布式集群搭建

任务目的 重点掌握 YARN 集群的相关配置学会启动和关闭 YARN 集群的两种方式能够使用 jps 命令查看进程的启动情况能够通过 UI 查看 YARN 集群的运行状态任务清单 任务1:YARN 集群主要配置文件讲解任务2:YARN 集群测试任务步骤 任务1:YARN 集群主要配置文件讲解 1.1 配置环…

【新版】系统架构设计师 - 计算机系统基础知识

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 计算机系统基础知识考点摘要计算机系统计算机硬件组成浮点数Flynn分类法CISC与RISC流水线技术超标量流水线存储系统层次化存储结构CacheCache的命中率Cache的页面淘汰主存编址磁盘管理&#xff08…

Linux 信号

文章目录 1. 信号1.1 前言1.2 信号的位置1.3 接口1.3.1 sigset_t1.3.2 信号集操作接口1.3.3 signal1.3.4 sigprocmask1.3.5 sigpending 2. 信号的处理2.1 内核态和用户态2.2 信号的监测和处理 1. 信号 1.1 前言 在 Linux 中,信号是一种用于进程之间的通信机制&…

地震勘探基础(十一)之水平叠加处理

水平叠加处理 地震资料经过预处理,静校正,反褶积,速度分析和动校正处理后就要进行水平叠加处理。地震水平叠加处理是地震常规处理的重要环节。 假设一个共中心点道集有三个地震道,经过速度分析和动校正以后,水平叠加…

【数据结构】何为数据结构。

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星T…

Tik Tok的海外娱乐公会(中亚、巴西、美国、台湾)怎么申请?

TIKTOK 公会海外市场潜力巨大 自 2016 年始,多家直播平台陆续拓展至东南亚、中东、俄罗斯、日韩、 欧美、拉美等地区 海外市场作为直播发展新蓝海,2021 年直播行业整体规模达百亿美元, 并维持高速增长 TikTok 直播市场空间 TikTok 已经成…

【 Python 全栈开发 - WEB开发篇 - 31 】where条件查询

文章目录 一、where条件查询1.关系运算符查询2.IN关键字查询3.BETWEEN AND关键字查询4.空值查询5.AND关键字查询6.OR关键字查询7.LIKE关键字查询普通字符串含有%通配的字符串含有_通配的字符串 一、where条件查询 MySQL 的 where 条件查询是指在查询数据时,通过 wh…

网络安全系统教程+渗透测试+学习路线(自学笔记)

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面…

Qt6 C++基础入门3 对话框与MainWindow

目录 对话框MainWindow菜单工具栏 对话框 目前的对话框主要有以下几大类 文件对话框( QFile Dialog)消息对话框( QMessageBox)输入对话框( QInputDialog)颜色对话框( QColorDialog)字体对话框( QFontDialog) 这是七大对话框及其基本用法的实例参考,所有代码都写在…

四、LLC 谐振变换器

变换器实现 ZVS 的限制 全面了解LLC谐振变换器实现ZVS的条件,把变换器主电路变形成图所示形式。其中 Coss1、Coss2分别为开关管 S1、S2 漏-源极间的寄生电容,并且Coss1Coss2 Coss 。Cstray为与谐振网络并联的等效寄生电容,则变换器在 ZVS 条…

万维网服务器

一、域名解析gethostbyname函数 struct hostent {char *h_name; /* 官方域名 */char **h_aliases; /* 别名*/int h_addrtype; /* 地址族(地址类型) */int h_length; /* 地址长度 */char **h_addr_list; …

QT+OpenGL高级光照 Blinn-Phong和Gamma校正

QTOpenGL高级光照1 本篇完整工程见gitee:QtOpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 Blinn-Phong 冯氏光照:视线与反射方向之间的夹角不小于90度,镜面光分量会变成0.0(不是很合理&am…