|
@@ -25,9 +25,9 @@ class VoicePromptView(View):
|
|
|
request.encoding = 'utf-8'
|
|
|
request_dict = request.POST
|
|
|
operation = kwargs.get('operation', None)
|
|
|
- return self.validate(request_dict, operation)
|
|
|
+ return self.validate(request, request_dict, operation)
|
|
|
|
|
|
- def validate(self, request_dict, operation):
|
|
|
+ def validate(self, request, request_dict, operation):
|
|
|
token = request_dict.get('token', None)
|
|
|
print(token)
|
|
|
lang = request_dict.get('lang', None)
|
|
@@ -56,6 +56,8 @@ class VoicePromptView(View):
|
|
|
return self.do_admin_update(token.userID, request_dict, response)
|
|
|
elif operation == 'adminDelete':
|
|
|
return self.do_admin_delete(token.userID, request_dict, response)
|
|
|
+ elif operation == 'uploadSystemVoice':
|
|
|
+ return self.upload_system_voice(request, request_dict, response)
|
|
|
else:
|
|
|
return response.json(404)
|
|
|
|
|
@@ -291,6 +293,48 @@ class VoicePromptView(View):
|
|
|
else:
|
|
|
return response.json(444)
|
|
|
|
|
|
+ @classmethod
|
|
|
+ def upload_system_voice(cls, request, request_dict, response):
|
|
|
+ """
|
|
|
+ 上传系统个性化语音(系统默认以及算法小店默认提示音)
|
|
|
+ 个性化语音有两个功能涉及使用一个是设备个性化语音,一个是算法小店语音
|
|
|
+ 此接口上传个性化语音文件
|
|
|
+ 参数algorithmType不为空或者不等于99(默认值)则系统保存的是算法小店的个性化语音
|
|
|
+ """
|
|
|
+ voice_file = request.FILES.get('voiceFile', None)
|
|
|
+ algorithm_type = int(request_dict.get('algorithmType', 99))
|
|
|
+ voice_title = request_dict.get('voiceTitle', None)
|
|
|
+ language = request_dict.get('language', None)
|
|
|
+
|
|
|
+ if not all([voice_file, algorithm_type, voice_title, language]):
|
|
|
+ return response.json(444)
|
|
|
+ try:
|
|
|
+ filename = CommonService.createOrderID() # 文件名时间+随机数生成
|
|
|
+ file_ext = '.' + voice_file.name.split('.')[-1]
|
|
|
+ now_time = int(time.time())
|
|
|
+ key = 'voice_prompt/system/' + filename + file_ext
|
|
|
+ # 上传文件到阿里云OSS
|
|
|
+ auth = oss2.Auth(OSS_STS_ACCESS_KEY, OSS_STS_ACCESS_SECRET)
|
|
|
+ bucket = oss2.Bucket(auth, 'oss-cn-shenzhen.aliyuncs.com', 'ansjer-static-resources')
|
|
|
+ bucket.put_object(key=key, data=voice_file)
|
|
|
+
|
|
|
+ voice_type = 1 if algorithm_type < 99 else 0 # 算法小店提示音默认判断type=1才会显示
|
|
|
+ voice_vo = {
|
|
|
+ 'title': voice_title,
|
|
|
+ 'filename': filename + file_ext,
|
|
|
+ 'add_time': now_time,
|
|
|
+ 'classification': 0,
|
|
|
+ 'algorithm_type': algorithm_type,
|
|
|
+ 'language': language,
|
|
|
+ 'type': voice_type
|
|
|
+ }
|
|
|
+ VoicePromptModel.objects.create(**voice_vo)
|
|
|
+
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ print(e)
|
|
|
+ return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
+
|
|
|
def do_admin_add(self, userID, request_dict, response):
|
|
|
own_perm = ModelService.check_perm(userID, 10)
|
|
|
if not own_perm:
|