2017-01-02 6 views
1

私はinterim_results = Trueを設定すると、値のエラーを取得したときにスピーチをテキストワトソンAPiに使用しようとしています。私を助けてください:)json.dumps ValueError:余分なデータがjson出力をダンプできません

with open(join(dirname(__file__), './audio-file.wav'), 'rb') as audio_file: 
print(json.dumps(speech_to_text.recognize(
    audio_file, content_type='audio/wav', timestamps=True, interim_results =True, word_confidence=True), indent=2)) 

エラー出力:私はinterim_results = Falseを設定するとき

The error output

は、しかし、私は正常に働いていた出力を得ました。

出力時にinterim_results = False

The output when the interim_results=False

私は理由は、複数のJSON出力に関連するだろうと思いますが、これはjson.dumpsあるので、私はそれを解決する方法がわからない:)だから私はできますこのケースを解決するために、json.loads値のエラー・ケースを参照しないでください。

答えて

1

interim_results = trueの場合、サービスは到着時に個別に解析することを想定して、複数のJSONブロブを返送します。これは、たとえば、ほぼリアルタイムの文字列を表示する場合に便利です。

一時的な書き起こしだけで、テキストをほぼリアルタイムで表示する必要がない場合は、interim_resultsをfalseに設定しておくことをお勧めします。

あなた}\s*{(ここで、1 JSONブロブが終了し、次の1が始まる)の周りに結果を分割して、JSON(必要に応じて}{ Sを復元する)として、個々のチャンクを解析し、それはないだろうでした完全な最終結果が既にそこにあるので、実際に何かを得ることができます。

また、リアルタイムに近いアップデートが必要な場合、WebSocketインターフェイスを使用するとJSONチャンクが届きます(例:https://github.com/watson-developer-cloud/speech-to-text-websockets-python)。

+0

ありがとうございますが、プロセス中にjson結果を分割する方法はありますか?私は誰かがそのコードを与えることができることを願っています。 – dlsnfl37

+0

私が知っているわけではありませんが、作成したければそれほど難しくはありません。 SDKに含まれているプルリクエストを送信することもできます:https://github.com/watson-developer-cloud/python-sdk –

関連する問題