SmartReplyController.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import json
  2. import os
  3. from Object.ResponseObject import ResponseObject
  4. from django.views import View
  5. from Object.WsParam.AIChatObject import ChatClient
  6. from Object.WsParam.WsParamRecognizeObject import WsParamRecognize
  7. from Object.WsParam.WsParamSynthesizeObject import WsParamSynthesize
  8. class WsParamService(View):
  9. def get(self, request, *args, **kwargs):
  10. request.encoding = 'utf-8'
  11. operation = kwargs.get('operation')
  12. request_dict = request.GET
  13. return self.validation(request, request_dict, operation)
  14. def post(self, request, *args, **kwargs):
  15. request.encoding = 'utf-8'
  16. operation = kwargs.get('operation')
  17. request_dict = request.POST
  18. return self.validation(request, request_dict, operation)
  19. def validation(self, request, request_dict, operation):
  20. language = request_dict.get('language', 'en')
  21. response = ResponseObject(language)
  22. if operation == 'smartReply':
  23. return self.smart_reply(request, request_dict, response)
  24. else:
  25. return response.json(414)
  26. def smart_reply(self, request, request_dict, response):
  27. audio = request.FILES.get('audio', None)
  28. system = request_dict.get('system', None)
  29. audio_type = request_dict.get('audioType', 'pcm')
  30. save_directory = 'static/demo_files/'
  31. if not os.path.exists(save_directory):
  32. os.makedirs(save_directory)
  33. audio_path = os.path.join(save_directory, audio.name)
  34. with open(audio_path, 'wb') as destination:
  35. for chunk in audio.chunks():
  36. destination.write(chunk)
  37. APPID = "fcff8f4b"
  38. APIKey = "037571e7285e64e8dc321fa5b937fea2"
  39. APISecret = "ZTU3NWMyNTI1MTI4NTU5ZGUxMDZhNmQ5"
  40. gpt_url = 'wss://spark-api.xf-yun.com/v3.5/chat'
  41. domain = 'generalv3.5'
  42. AudioFile = audio_path
  43. # 传入语音 -> 转文字 APPID, APISecret, APIKey
  44. wsParamRecognize = WsParamRecognize(APPID, APISecret, APIKey, AudioFile)
  45. query = wsParamRecognize.start()
  46. print(query)
  47. # 大语言模型 APPID, APIKey, APISecret, gpt_url, domain, query, history=None, system=None
  48. chat = ChatClient(APPID, APIKey, APISecret, gpt_url, domain, query, history, system)
  49. answer = chat.start()
  50. print(answer)
  51. # 文字转编码 self, APPID, APIKey, APISecret, Text, AudioType = "pcm"
  52. wsParamSynthesize = WsParamSynthesize(APPID, APIKey, APISecret, answer, audio_type)
  53. answer_base = wsParamSynthesize.start()
  54. return response.json(0, answer_base)