Python智能语音识别语翻译平台|项目后端搭建

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
可观测链路 OpenTelemetry 版,每月50GB免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Python程序设计基础,第三方库Django、requests、hashlib、pyttsx3等的使用,百度API语音识别业务接口、文本朗读业务接口、翻译业务接口的传入。

640.jpg

Python程序设计基础,第三方库Django、requests、hashlib、pyttsx3等的使用,百度API语音识别业务接口、文本朗读业务接口、翻译业务接口的传入。

01、任务实现步骤

任务描述:本任务利用Django框架搭建智能语音识别与翻译平台的后端,包括识别、翻译、朗读百度API接口的调用以及平台的所有逻辑。

第一步:视图views.py的编写。中英文翻译接口需传入参数如图1所示。

640.png


■图1 百度api翻译接口需传入参数

中英文翻译接口核心代码如下所示。

#编写中英文翻译接口功能函数
def translate(text):
    appid = '20220826001320772'
    secretKey = 'C0jtrN2cmdIzVqIA_nsD'  # 填写你的密钥
    #按照pid文档编写(接入接口)
    httpClient = None
    myurl = '/api/trans/vip/translate'
    #翻译样式
    fromLang = 'auto'  #选择自动识别语言
    toLang = 'zh'      #翻译成中文
    salt = random.randint(32768, 65536)
    q = text
    sign = appid + q + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
    salt) + '&sign=' + sign
    #使用try语句处理异常
    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)

        # response是HTTPResponse对象
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        result = json.loads(result_all)
        print(result)
        res = result['trans_result'][0]['dst']
        return ress
    except Exception as e:
        print (e)
    finally:
        if httpClient:
            httpClient.close()

第二步:编写路由urls.py。在URL请求和处理该请求的views.py函数之间建立一个对应关系,url的核心代码如下所示。


urlpatterns = [
    path('admin/', admin.site.urls),
    re_path('^voice/(?P<path>.*)',serve,{
   
   "document_root":MEDIA_ROOT}),
    re_path(r'^base/', include( 'base.urls', namespace="base") ),
    re_path(r'^onto/', include('ontology.urls', namespace="ontology")),
    re_path(r'^corpus/', include( 'corpus.urls', namespace="corpus") ),
    re_path(r'^event/', include('event.urls', namespace="event")),
    re_path(r'^txtproc/', include( 'txtproc.urls', namespace="txtproc") ),
    re_path(r'^lexicon/', include('lexicon.urls', namespace="lexicon")),
    re_path(r'^phrase/', include('phrase.urls', namespace="phrase")),
    re_path(r'^path/', include('path.urls', namespace="path")),
    re_path(r'^nlpapi/', include('nlpapi.urls', namespace="nlpapi")),
    re_path(r'^uapi/', include('utils.urls', namespace="uapi")),

第三步:settings.py的编写。settings.py用于配置和管理Django项目的管理运维信息,settings.py核心代码如下所示。

#调试模式,创建工程后初始值为True
DEBUG=True
#ALLOWED_HOSTS用来设置允许哪些主机访问我们的django后台站点
ALLOWED_HOSTS = ['*']

# 核心代码放在apps上
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
INSTALLED_APPS = [
    'django.contrib.admin',             #内置的后台管理系统
    'django.contrib.auth',              #内置的用户认证系统
    'django.contrib.contenttypes',      #记录项目中所有model元数据
    'django.contrib.sessions',          #用于标识当前访问网站的用户身份,记录相关用户信息
    'django.contrib.messages',          #massage提示功能
    'django.contrib.staticfiles',       #查找静态资源路径
    'voice2voice'
]

#中间件MIDDLEWARE配置
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
#指定urls.py(路由)的路径,调用v2vservice中的类模块
ROOT_URLCONF = 'aitrans.urls'
#模板信息配置
TEMPLATES = [
    {
   
   
        'BACKEND': 'django.template.backends.django.DjangoTemplates',  #定义模板引擎,用于识别模板里面的变量和指令
        'DIRS': [os.path.join(BASE_DIR,'templates')],            #指向模板存放的路径—templates文件夹,方便调用index.htm以及更高配置的base.htm
        'APP_DIRS': True,        #是否在App里查找模板文件
        #用于填充在RequestContext的上下文
        'OPTIONS': {
   
   
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
            ],
            'builtins':['django.templatetags.static'], #import static tag
        },
    },
]

WSGI_APPLICATION = 'aitrans.wsgi.application'

# Database——系统默认分配的数据库部分
DATABASES = {
   
   
    'default': {
   
   
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path

第四步:wsgi.py的编写。wsgi为Web服务器网关接口,实际上就是一种协议,它遵守 WSGI 协议并负责网络通讯部分的实现,wsgi.py的代码如下所示。

import os      #导入os库
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'aitrans.settings')
application = get_wsgi_application()

第五步:启动主程序manage.py的编写,manage.py如下所示。

import sys
import os
#定义main()函数
def main():
    #调用settings.py
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'aitrans.settings')    
    #处理异常捕获
    try:                     
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)
#启动主程序
if __name__ == '__main__':
    main()
相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
目录
相关文章
|
9天前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
7天前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
14天前
|
数据采集 XML 前端开发
Python爬虫实战:利用代理IP爬取百度翻译
Python 爬虫实战:利用代理 IP 爬取百度翻译
|
19天前
|
移动开发 开发框架 小程序
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
|
1月前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
【7月更文挑战第15天】Python后端(Django/Flask)与前端通过AJAX或Fetch API实现异步交互,提升Web应用体验。Python提供强大的后端支持,AJAX用于不刷新页面的数据交换,Fetch API作为现代标准,基于Promise简化HTTP请求。结合两者,构建高效、流畅的交互系统,优化响应速度和用户体验,开启Web开发新篇章。
37 5
|
1月前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
【7月更文挑战第13天】构建现代Web应用的关键在于提供无缝用户体验,这涉及AJAX和Fetch API的异步数据交换以及Python(如Flask)的后端支持。Fetch API以其基于Promise的简洁接口,改进了AJAX的复杂性。例如,一个Flask应用可提供用户数据,前端利用Fetch API在不刷新页面的情况下显示信息。这种结合提升了效率,减少了服务器负载,是现代Web开发的趋势。随着技术发展,预期将有更多工具优化这一过程。
47 3
|
1月前
|
前端开发 JavaScript Go
|
29天前
|
机器学习/深度学习 存储 自然语言处理
使用Python实现深度学习模型:语言翻译与多语种处理
【7月更文挑战第21天】 使用Python实现深度学习模型:语言翻译与多语种处理
40 0
|
1月前
|
前端开发 API 开发者
深度剖析:AJAX、Fetch API如何成为Python后端开发者的最佳拍档!
【7月更文挑战第14天】在Web开发中,前端与后端的协作关键在于异步数据交换。AJAX和Fetch API是两种主要技术,用于不刷新页面的情况下与服务器通信。AJAX依赖XMLHttpRequest,常用于JSON数据传输,而Fetch API是现代替代品,基于Promise,语法简洁。Python的Flask框架可创建API接口来响应这些请求。了解并熟练使用这些技术能提升Python后端开发的效率,构建高性能的Web应用。
47 0
|
1月前
|
XML 前端开发 API
颠覆传统!AJAX、Fetch API与Python后端,开启Web开发新篇章!
【7月更文挑战第14天】Web开发中,AJAX作为异步通信先驱,与新兴的Fetch API一起革新交互体验。Fetch基于Promise,简化了请求处理。Python后端,如Flask,提供稳定支撑。这三者的融合,推动Web应用达到新高度,实现高效、实时交互。通过示例展示,我们看到从发送请求到更新UI的流畅过程,以及Python如何轻松返回JSON数据。这种组合揭示了现代Web开发的潜力和魅力。
24 0