文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

千锋扣丁学堂Python培训之Web版

2023-01-31 08:19

关注

今天千锋扣丁学堂Python培训老师给大家分一篇关于PythonWeb版语音合成实例详解,首先语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速、音调、音量设置,打破传统文字式人机交互的方式,让人机沟通更自然,下面我们一起来看一下吧。

应用场景

将游戏场景中的公告、任务或派单信息通过语音播报,让玩家玩游戏或配送员送货的同时,也可接听新任务。

文学小说类软件,可以利用百度语音合成技术将文学小说作品进行高质量的朗读,流畅清晰,解放双眼,畅听世界。

软件架构

Python3.7.2、Django2.1.7、baidu-aip(百度语音API)

案例

这里只展示部分代码,有兴趣的同学可以自行下载源码安装调试。

import os

import time

import codecs

from aip import AipSpeech

from django.shortcuts import render

from django.http import HttpResponse

'''

pip install --upgrade pip

pip install django

pip install baidu-aip

'''

def main(request):

return render(request, 'index.html')

def m_main(request):

return render(request, 'm_index.html')

def convert(request):

message = request.POST.get("message")

switch = request.POST.get("switch")

mp3 = du_say(message, switch)

return HttpResponse(mp3)

def du_say(message, switch):

write_txt(message)

app_id = '*'

api_key = '*'

secret_key = '*'

client = AipSpeech(app_id, api_key, secret_key)

if switch == "true":

switch = 3

else:

switch = 4

result = client.synthesis(message, 'zh', 1, {

'vol': 5, 'per': switch,

})

t = time.time()

now_time = lambda: int(round(t * 1000))

path = os.getcwd() + os.path.sep + "static" + os.path.sep + "audio"+os.path.sep

audio = path+str(now_time())+'.mp3'

if not isinstance(result, dict):

with open(audio, 'wb') as f:

f.write(result)

return str(now_time())+'.mp3'

def write_txt(message):

t = time.time()

now_time = lambda: int(round(t * 1000))

path = os.getcwd() + os.path.sep + "static" + os.path.sep + "text"+os.path.sep

text = path+str(now_time())+'.txt'

with codecs.open(text, 'a', encoding='utf8')as f:

f.write(message)

本地部署

从码云拉取项目到本地:

https://gitee.com/52itstyle/b...

配置百度语音API:

https://console.bce.baidu.com...

启动项目:

manage.py runserver

外网部署

这里以Linux为例,代理使用openresty。

安装Python3

wget https://www.python.org/ftp/py...

事先安装依赖,否则后期安装会报错:

yum -y install zlib*

yum -y install libffi-devel

下面开始正式安装:

tar -xvf Python-3.7.1.tar.xz

cd Python-3.7.1

./configure

make && make install

安装Django

pip install Django

安装成功以后需要重新配置并编译安装Python3:

./configure

make && make install

安装服务器uwsgi

pip3 install uwsgi

上传项目到服务器,并切换到speech目录:

mkdir script

在script下新增uwsgi.ini(项目中已经配置好,自行修改路径即可):

[uwsgi]

chdir=/www/speech/

module=speech.wsgi:application

socket=/www/speech/script/uwsgi.sock

workers=5

pidfile=/www/speech/script/uwsgi.pid

http=127.0.0.1:8001

static-map=/static=/www/speech/static

uid=root

gid=root

master=true

vacuum=true

thunder-lock=true

enable-threads=true

harakiri=30

post-buffering=4096

daemonize=/www/speech/script/uwsgi.log

然后使用以下命令启动:

uwsgi --ini uwsgi.ini

执行命令,查看是否启动成功:

[root@AY140216131049Z script]# ps -ef|grep uwsgi

root 3040 1 0 Nov21 ? 00:00:03 uwsgi --ini uwsgi.ini

root 3041 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini

root 3042 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini

root 3043 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini

root 3044 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini

root 3045 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini

root 3046 3040 0 Nov21 ? 00:00:00 uwsgi --ini uwsgi.ini

root 6606 6580 0 18:13 pts/0 00:00:00 grep --color=auto uwsgi

重启:

uwsgi --reload uwsgi.pid

配置Nginx代理:

server {

listen 80;

server_name speech.52itstyle.vip;

charset utf-8;

location / {

include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的

uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间

uwsgi_pass unix:/www/speech/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他

}

# 动静分离 Nginx 处理静态请求

location /static {

root /www/speech/;

}

}

如果启动HTTPS:

server {

listen 80;

listen 443 ssl;

server_name speech.52itstyle.vip;

#ssl on;

#证书路径

ssl_certificate /usr/local/openresty/nginx/cert/1901523_speech.52itstyle.vip.pem;

#私钥路径

ssl_certificate_key /usr/local/openresty/nginx/cert/1901523_speech.52itstyle.vip.key;

#缓存有效期

ssl_session_timeout 5m;

#可选的加密算法,顺序很重要,越靠前的优先级越高.

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

#安全链接可选的加密协议

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

location / {

include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的

uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间

uwsgi_pass unix:/www/speech/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他

}

# 动静分离 Nginx 处理静态请求

location /static {

root /www/speech/;

}

}

以上就是关于千锋扣丁学堂Python培训之Web版语音合成实例详解的全部内容,希望对大家的学习有所帮助,最后想要了解更多关于Python和人工智能方面内容的小伙伴,请关注扣丁学堂Python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python开发环境搭建视频,Python培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的Python视频教程定能让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:279521237。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯