python文字转语音(pyttsx3+flask)

简介: 本文主要讲解如何用python的pyttsx3库+flask框架,手写一个文字转语音api

前言


本文主要讲解如何用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__)
@app.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)
# 输入表单文字转语音
@app.route('/tts', methods=["POST"])
@cross_origin()
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的功能,可以自行去官方文档搜索查阅.



相关文章
|
2月前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
47 1
|
1月前
|
Python
python3之flask快速入门教程Demo
python3之flask快速入门教程Demo
41 6
|
1月前
|
开发框架 数据库 开发者
Web开发新境界:用Python玩转Django和Flask!
【6月更文挑战第12天】Python的Web开发框架Django和Flask各有千秋。Django是全能型框架,适合快速开发大型应用,提供ORM、模板引擎、URL路由和后台管理等全面功能。Flask则轻量级且灵活,适用于小型到中型应用,以其简单易用、高度可扩展和灵活路由著称。两者结合使用,能应对各种Web开发需求。
|
27天前
|
关系型数据库 MySQL 数据库
如何使用Python的Flask框架来构建一个简单的Web应用
如何使用Python的Flask框架来构建一个简单的Web应用
39 0
|
2月前
|
应用服务中间件 nginx Docker
使用 Python Flask 创建简易文件上传服务
在平时工作中,文件上传是一项常见的需求,例如将应用异常时通过脚本生成的dump文件收集起来进行分析,但实现起来却可能相当复杂。幸运的是,Flask框架提供了一种简单而高效的方式来处理文件上传,代码不到100行。在本文中,我们将探讨如何使用Flask实现文件上传功能,编写Dockerfile将应用程序通过docker部署。
|
11天前
|
JSON 数据格式 Python
Flask实现内部接口----pycharm安装及新建,location代表着文件路径,下面是Python的环境,Flask是由Python开发的框架,Python文件接口ython通过GET发送
Flask实现内部接口----pycharm安装及新建,location代表着文件路径,下面是Python的环境,Flask是由Python开发的框架,Python文件接口ython通过GET发送
|
16天前
|
JSON 安全 API
如何高效编写API接口:以Python与Flask为例
构建RESTful API的简明教程:使用Python的Flask框架,从环境准备(安装Python,设置虚拟环境,安装Flask)到编写首个API(包括获取用户列表和单个用户信息的路由)。运行API服务器并测试在`http://127.0.0.1:5000/users`。进阶话题包括安全、数据库集成、API文档生成和性能优化。【6月更文挑战第27天】
40 7
|
2月前
|
应用服务中间件 API nginx
使用Python和Flask构建RESTful Web API
使用Python和Flask构建RESTful Web API
41 0
|
2月前
|
存储 数据库连接 数据安全/隐私保护
使用Python和Flask构建一个简单的Web博客应用
使用Python和Flask构建一个简单的Web博客应用
32 0
|
2月前
|
缓存 API 数据库
构建高效Python Web应用:Flask框架与RESTful API设计原则
【5月更文挑战第20天】 在现代Web开发中,构建一个轻量级且高效的后端服务至关重要。本文将深入探讨如何使用Python的Flask框架结合RESTful API设计原则来创建可扩展和易于维护的Web应用程序。我们将通过分析Flask的核心特性,以及如何利用它来实现资源的合理划分、接口的版本控制和请求处理优化等,来指导读者打造高性能的API服务。文中不仅提供了理论指导,还包括了实践案例,旨在帮助开发者提升开发效率,并增强应用的稳定性和用户体验。