django rest framework 结合百度语音合成 基于channels实现实时通讯

本文介绍了如何使用Django REST Framework结合百度语音合成,通过channels实现前后端分离的实时通讯。功能包括用户提现信息通过channels传递给代理,并通过百度语音合成就文字转为语音播放。详细步骤涉及channels的安装、配置,以及URL路由和消费者设置。项目结构、HTML模板和数据库迁移也有详述,同时提供了一个可行的语音合成功能示例。
摘要由CSDN通过智能技术生成

django rest framework 结合百度语音合成 基于channels实现实时通讯

功能简介:前后端分离 django rest framework 实现用户在前端发起一笔提现,经过channels处理将信息发至其代理,结合百度语音合成,将文字合成语音播放;

百度语音合成介绍:https://ai.baidu.com/docs/#/TTS-API/top

操作步骤:

安装:

pip install channels

添加channels到您的 INSTALLED_APPS设置:

INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘django_crontab’,
‘user.apps.UserConfig’,
‘nsm.apps.NsmConfig’,
‘trade.apps.TradeConfig’,
‘channel.apps.ChannelConfig’,
‘card.apps.CardConfig’,
‘proxy.apps.ProxyConfig’,
‘spuser.apps.SpuserConfig’,
‘rest_framework’,
‘django_filters’,
‘channels’,
]
在以下位置进行默认路由myproject/routing.py:
在这里插入图片描述

from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import card.routing
application = ProtocolTypeRouter({
    # Empty for now (http->django views is added by default)
    'websocket': AuthMiddlewareStack(
        URLRouter(
            card.routing.websocket_urlpatterns
        )
    ),
})

此根路由配置指定在与Channels开发服务器建立连接时,ProtocolTypeRouter将首先检查连接类型。如果它是WebSocket连接(ws://或wss://),则将连接到AuthMiddlewareStack。

在AuthMiddlewareStack将填充的连接的范围与到当前认证的用户,类似于Django的如何一个参考AuthenticationMiddleware填充请求与当前认证的用户的图功能的对象。(范围将在本教程的后面部分讨论。)然后将连接到URLRouter。

在URLRouter将检查连接到路由到一个特定的消费者,基于所提供的HTTP路径url模式。

在settings中设置您的ASGI_APPLICATION 设置为指向该路由对象作为根应用程序:

ASGI_APPLICATION = “bank.routing.application”
你需要创建一个 应用:
如图我创建了一个app,为card,记得添加到INSTALLED_APPS设置
在这里插入图片描述
在card app 中创建一个py文件consumers.py

# chat/consumers.py

from asgiref.sync import async_to_sync
from channels.generic.websocket import WebsocketConsumer
import json
from utils.tts import test_audio
from bank.settings import CONN
from user.models import UserProfile

class ChatConsumer(WebsocketConsumer):
    def connect(self):

        # self.room_name = self.scope['url_route']['kwargs']['room_name']
        # self.room_group_name = 'chat_%s' % self.room_name
        #
        # # Join room group
        # async_to_sync(self.channel_layer.group_add)(
        #     self.room_group_name,
        #     self.channel_name
        # )

        self.accept()

    def disconnect(self, close_code):
        s=self.channel_name
        user=UserProfile.objects.filter(soket=str(s)).first()
        if user:
            print(111)
            user.soket=''
            user.save()
            if user.level==2:
                async_to_sync(self.channel_layer.group_discard)(
                    user.username,
                    self.channel_name
                )
                return
        # async_to_sync(self.channel_layer.group_discard)(
        #   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值