2017-10-25 2 views
0

저는 Python에서 Microsoft 사용자 지정 음성 서비스를 사용하고 있습니다. 현재는 HTTP 끝점 만 있습니다. 문서에 따라 웹 소켓도 지원됩니다.Azure인지 서비스 - Python 및 웹 소켓을 사용한 사용자 지정 음성

웹 소켓을 통해 데이터를 전송하는 예가 있습니까? 지금까지 토큰을 사용하여 websocket을 열어보고 있습니다. 내가 보내는 데이터를 시작할 때, 연결 오류로 104

세부 사항을 닫습니다 : - Python3 - 웹 소켓 클라이언트 - RIFF 헤더 (HTTP와 함께 작동)

들으와 WAV!

코드 샘플 :

# 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') 
+0

안녕하세요, 코드 및 오류 로그에 대해 자세히 알려주십시오. –

+0

코드 샘플이 추가되었습니다. – madkote

답변

0

나는 음성 프로토콜 엔드 포인트를 사용하는 것이 좋습니다 (예를 들어, "WSS : //YOUR_DEPLOYMENT.api.cris.ai/speech/recognition/interactive/cognitiveservices/v1").

이러한 엔드 포인트에서 사용되는 프로토콜은 여기에 설명되어 있습니다 : Microsoft Speech WebSocket Protocol. 프로토콜 here의 JavaScript 구현을 찾을 수 있습니다.