2017-01-02 1 views
1

텍스트 왓슨 API에 음성을 사용하려고하는데, interim_results = True을 설정하면 값 오류가 발생합니다. 제발 도와주세요 :)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 BLOB를 되돌려 보냅니다. 예를 들어 실시간에 가까운 필사본을 표시하려는 경우에 유용합니다.

일회용 사본을 작성하고 거의 실시간으로 텍스트를 표시 할 필요가없는 경우 interim_results를 false로 설정하는 것이 좋습니다.

당신 }\s*{ 주위 결과를 분할 (여기서 하나의 JSON의 덩어리 종료하고 다음 시작), 다음합니다 (}{의 필요한 경우 복원) JSON과 같은 각각의 덩어리를 구문 분석,하지만 그렇지 않은 것 완전한 최종 결과가 이미 존재하기 때문에 실제로는 무엇이든 얻을 수 있습니다.

실시간 업데이트가 거의 필요하거나 필요하다면 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). –

관련 문제