fix: 豆包模型按行发送接收,合并mp3后返回前端
This commit is contained in:
parent
4981b15757
commit
a9d9e293a7
@ -90,31 +90,36 @@ class VolcanicEngineTextToSpeech(MaxKBBaseModel, BaseTextToSpeech):
|
|||||||
},
|
},
|
||||||
"request": {
|
"request": {
|
||||||
"reqid": str(uuid.uuid4()),
|
"reqid": str(uuid.uuid4()),
|
||||||
"text": text,
|
"text": '',
|
||||||
"text_type": "plain",
|
"text_type": "plain",
|
||||||
"operation": "xxx"
|
"operation": "xxx"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return asyncio.run(self.submit(request_json))
|
return asyncio.run(self.submit(request_json, text))
|
||||||
|
|
||||||
def token_auth(self):
|
def token_auth(self):
|
||||||
return {'Authorization': 'Bearer; {}'.format(self.volcanic_token)}
|
return {'Authorization': 'Bearer; {}'.format(self.volcanic_token)}
|
||||||
|
|
||||||
async def submit(self, request_json):
|
async def submit(self, request_json, text):
|
||||||
submit_request_json = copy.deepcopy(request_json)
|
submit_request_json = copy.deepcopy(request_json)
|
||||||
submit_request_json["request"]["reqid"] = str(uuid.uuid4())
|
|
||||||
submit_request_json["request"]["operation"] = "submit"
|
submit_request_json["request"]["operation"] = "submit"
|
||||||
payload_bytes = str.encode(json.dumps(submit_request_json))
|
|
||||||
payload_bytes = gzip.compress(payload_bytes) # if no compression, comment this line
|
|
||||||
full_client_request = bytearray(default_header)
|
|
||||||
full_client_request.extend((len(payload_bytes)).to_bytes(4, 'big')) # payload size(4 bytes)
|
|
||||||
full_client_request.extend(payload_bytes) # payload
|
|
||||||
header = {"Authorization": f"Bearer; {self.volcanic_token}"}
|
header = {"Authorization": f"Bearer; {self.volcanic_token}"}
|
||||||
|
result = b''
|
||||||
async with websockets.connect(self.volcanic_api_url, extra_headers=header, ping_interval=None,
|
async with websockets.connect(self.volcanic_api_url, extra_headers=header, ping_interval=None,
|
||||||
ssl=ssl_context) as ws:
|
ssl=ssl_context) as ws:
|
||||||
await ws.send(full_client_request)
|
lines = text.split('\n')
|
||||||
return await self.parse_response(ws)
|
for line in lines:
|
||||||
|
submit_request_json["request"]["reqid"] = str(uuid.uuid4())
|
||||||
|
submit_request_json["request"]["text"] = line
|
||||||
|
payload_bytes = str.encode(json.dumps(submit_request_json))
|
||||||
|
payload_bytes = gzip.compress(payload_bytes) # if no compression, comment this line
|
||||||
|
full_client_request = bytearray(default_header)
|
||||||
|
full_client_request.extend((len(payload_bytes)).to_bytes(4, 'big')) # payload size(4 bytes)
|
||||||
|
full_client_request.extend(payload_bytes) # payload
|
||||||
|
await ws.send(full_client_request)
|
||||||
|
result += await self.parse_response(ws)
|
||||||
|
return result
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
async def parse_response(ws):
|
async def parse_response(ws):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user