1

Когда я пытаюсь использовать код STT Java с набором модели «zh-CN_BroadbandModel», не может получить ожидаемый результат.Watson речевое сообщение, как вернуть язык, отличный от английского, в java

Вот мой пример кода:

public static void main (String[] args) { 

    SpeechToText service = new SpeechToText(); 
    service.setUsernameAndPassword(USERNAME, PASSWORD); 

    File file = new File("C:/IBM/Watson/APIs/speech-to-text/test.wav"); 

    Map<String, Object> params = new HashMap<String, Object>(); 
    params.put("audio", file); 
    params.put("content_type","audio/wav"); 
    params.put("model", "zh-CN_BroadbandModel"); 

    SpeechResults transcript = service.recognize(params); 

    System.out.println(transcript); 
} 

SpeechResult, как показано ниже:

{"results": [{ 
     "final": true, 
     "alternatives": [ 
     {"transcript": "?? ? ? ? ?? ? ? ? ?? ??? ? ??? ?? ? ? ?? ?? ? ??? ? ?? ? ?? ?? ? ?? ? ?? ? ?? ?? ? "}]}], 
    "result_index": 0 
} 

Я попытался изменить модель на "ан-US_BroadbandModel", даже с той же файл WAV, то вернуть английские слова (хотя wav находится на китайском языке). В этом случае, я думаю, что «модель» влияет.

Но в ответ я вижу, что местный номер en_US.

Любой способ установить язык?

ответ

5

Это проблема с кодировкой вывода консоли, используемой Java в Windows.

По умолчанию консольный вывод кодировки на Windows не UTF-8, но CP850.

Используйте PrintStream с явным кодированием, чтобы просмотреть результаты.

 
PrintStream out = new PrintStream(System.out, true, "UTF-8"); 
+0

Благодарим за отзыв. Я использовал java-sdk-java-wrapper-1.1.0, проблема выглядит в ResponseUtil.getString (ответ HttpResponse) для строки: return EntityUtils.toString (entity, "UTF-8"); Когда я изменю его на следующий код, чтобы использовать IOUtils.copy вместо EntityUtils, проблема исчезла. \t InputStream resContent = entity.getContent(); \t StringWriter writer = new StringWriter(); \t Строковое кодирование = "UTF-8"; \t IOUtils.copy (resContent, writer, encoding); Строковый результат = writer.toString(); \t resContent.close(); \t writer.close(); \t результат возврата; –

+0

Я открыл проблему для изучения этого https://github.com/watson-developer-cloud/java-sdk/issues/117. Можете ли вы предоставить образец файла для использования при тестировании? Я хочу, чтобы мы исправили вашу проблему –

Смежные вопросы