私は、ワトソン音声 - テキスト(STT)APIを呼び出すスクリプトを作成して、 for-wordをリアルタイムで表示します。私はこれがWebsocketバージョンのAPIを使って可能であるべきだと読んでいます。リアルタイム転写のためにWebソケットを使用してWatson Speech-to-Text APIに接続
私は(依存関係がインストールされていると仮定して)Linux上でこれを行うことができるはずPythonスクリプトを持っている、しかし、それは
from ws4py.client.threadedclient import WebSocketClient
import base64, json, ssl, subprocess, threading, time
class SpeechToTextClient(WebSocketClient):
def __init__(self):
ws_url = "wss://stream.watsonplatform.net/speech-to-text/api/v1/recognize"
username = "your username"
password = "your password"
auth_string = "%s:%s" % (username, password)
base64string = base64.encodestring(auth_string).replace("\n", "")
self.listening = False
try:
WebSocketClient.__init__(self, ws_url,
headers=[("Authorization", "Basic %s" % base64string)])
self.connect()
except: print "Failed to open WebSocket."
def opened(self):
self.send('{"action": "start", "content-type": "audio/l16;rate=16000"}')
self.stream_audio_thread = threading.Thread(target=self.stream_audio)
self.stream_audio_thread.start()
def received_message(self, message):
message = json.loads(str(message))
if "state" in message:
if message["state"] == "listening":
self.listening = True
print "Message received: " + str(message)
def stream_audio(self):
while not self.listening:
time.sleep(0.1)
reccmd = ["arecord", "-f", "S16_LE", "-r", "16000", "-t", "raw"]
p = subprocess.Popen(reccmd, stdout=subprocess.PIPE)
while self.listening:
data = p.stdout.read(1024)
try: self.send(bytearray(data), binary=True)
except ssl.SSLError: pass
p.kill()
def close(self):
self.listening = False
self.stream_audio_thread.join()
WebSocketClient.close(self)
try:
stt_client = SpeechToTextClient()
raw_input()
finally:
stt_client.close()
理想的にはMac OS Xの上では動作しません、私ではありませんPythonではこれをやっていますが、私の母国語であるRは、結果をやはり処理するために転送する必要があります。
ストリーミングされた転写をどのように得ることができるのか、私には誰もが解決策を提供できますか?