zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# -*- 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