Python程序设计基础,第三方库Django、requests、hashlib、pyttsx3等的使用,百度API语音识别业务接口、文本朗读业务接口、翻译业务接口的传入。
01、任务实现步骤
任务描述:本任务利用Django框架搭建智能语音识别与翻译平台的后端,包括识别、翻译、朗读百度API接口的调用以及平台的所有逻辑。
第一步:视图views.py的编写。中英文翻译接口需传入参数如图1所示。
■图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()