123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # -*- coding: utf-8 -*-
- """
- Speech
- """
- from .base import AipBase
- from .base import base64
- from .base import hashlib
- from .base import json
- class AipSpeech(AipBase):
- """
- Aip Speech
- """
- __asrUrl = 'http://vop.baidu.com/server_api'
- __ttsUrl = 'http://tsn.baidu.com/text2audio'
- def _isPermission(self, authObj):
- """
- check whether permission
- """
- return True
- def _proccessRequest(self, url, params, data, headers):
- """
- 参数处理
- """
- token = params.get('access_token', '')
- if not data.get('cuid', ''):
- data['cuid'] = hashlib.md5(token.encode()).hexdigest()
- if url == self.__asrUrl:
- data['token'] = token
- data = json.dumps(data)
- else:
- data['tok'] = token
- if 'access_token' in params:
- del params['access_token']
- return data
- def _proccessResult(self, content):
- """
- formate result
- """
- try:
- return super(AipSpeech, self)._proccessResult(content)
- except Exception as e:
- return {
- '__json_decode_error': content,
- }
- def asr(self, speech=None, format='pcm', rate=16000, options=None):
- """
- 语音识别
- """
- data = {}
- if speech:
- data['speech'] = base64.b64encode(speech).decode()
- data['len'] = len(speech)
- data['channel'] = 1
- data['format'] = format
- data['rate'] = rate
- data = dict(data, **(options or {}))
- return self._request(self.__asrUrl, data)
- def synthesis(self, text, lang='zh', ctp=1, options=None):
- """
- 语音合成
- """
- data ={}
- data['tex'] = text
- data['lan'] = lang
- data['ctp'] = ctp
- data = dict(data, **(options or {}))
- result = self._request(self.__ttsUrl, data)
- if '__json_decode_error' in result:
- return result['__json_decode_error']
- return result
|