Azure Cognitive Services - настраиваемая речь с питоном и веб-сокетами
Я использую Microsoft Custom Speech Services в Python. В настоящее время только с конечными точками HTTP. Согласно документации, веб-сокеты также поддерживаются.
У кого-нибудь есть пример отправки данных через веб-сокеты? Я до сих пор работал, открывая websocket для обслуживания моего токена. Но когда я начинаю отправлять данные, соединение закрывается с ошибкой 104.
Подробности: - Python3 - websocket-клиент - wav с заголовком RIFF (работает с HTTP)
Спасибо!
Пример кода:
# pip install websocket-client
def main_websocket_cris():
path_root = os.path.abspath(os.path.dirname(__file__))
filename = os.path.join(path_root, 'example_011.wav')
chunk_size = 8192
key = '<mykey>'
url = 'wss://<mydeployment>.api.cris.ai/ws/cris/speech/recognize'
token = auth_cris(key)
header = ['Authorization: Bearer %s' % token]
ws = websocket.create_connection(url, header=header)
try:
print('--- send ping')
ws.ping()
print('> ping done')
print('--- send pong')
ws.pong(b'')
print('> pong done')
print('--- status and headers')
print('> status:', ws.getstatus())
print('> headers:', ws.getheaders())
print('> status done')
headers = ['Path: audio',
'X-RequestId: %s' % str(uuid.uuid4()).replace('-', ''),
'X-Timestamp: %s' % datetime.datetime.now().isoformat(),
'Content-Type: audio/x-wav']
headers = {
'Path': 'audio',
'X-RequestId': str(uuid.uuid4()).replace('-', ''),
'X-Timestamp': str(datetime.datetime.now().isoformat()),
'Content-Type': 'audio/x-wav'
}
print(headers)
#ws.send(json.dumps(headers))
print('--- send binary data')
print('> read file in chunks of %s bytes' % chunk_size)
with open(filename, 'rb') as f:
while True:
chunk = f.read(chunk_size)
if not chunk:
break
ws.send(json.dumps(headers))
ws.send_binary(chunk)
print("> Sent")
print('--- now receive answer')
print("> Receiving...")
result = ws.recv()
print("> Received '%s'" % result)
finally:
print('--- close')
ws.close()
print('> closed')
1 ответ
Я рекомендую использовать конечные точки протокола речи (например, "wss://YOUR_DEPLOYMENT.api.cris.ai/speech/recognition/interactive/cognitiveservices/v1").
Протокол, используемый этими конечными точками, задокументирован здесь: Microsoft Speech WebSocket Protocol. Вы можете найти реализацию протокола на JavaScript здесь.