【问题标题】:Watson speech-to-text service how to return language other than English in javaWatson语音到文本服务如何在java中返回英语以外的语言
【发布时间】:2016-02-10 23:07:30
【问题描述】:

当我尝试将模型设置为“zh-CN_BroadbandModel”的 STT 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);
}

演讲结果如下:

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

我尝试将模型更改为“en-US_BroadbandModel”,即使使用相同的 wav 文件,它也会返回英文单词(尽管 wav 是中文的)。在这种情况下,我认为“模型”设置确实会影响。

但在响应中,我可以看到本地是 en_US

有什么方法可以设置语言?

【问题讨论】:

    标签: ibm-cloud speech-to-text chinese-locale ibm-watson


    【解决方案1】:

    这是 Windows 中 Java 使用的控制台输出编码的问题。

    Windows 上的默认控制台输出编码不是 UTF-8,而是 CP850

    使用带有显式编码的 PrintStream 来查看结果。

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

    【讨论】:

    • 感谢您的回复。我使用的是 java-sdk-java-wrapper-1.1.0,问题在 ResponseUtil.getString(HttpResponse response) 中看起来有问题:return EntityUtils.toString(entity,"UTF-8");当我将其更改为以下代码以使用 IOUtils.copy 而不是 EntityUtils 时,问题就消失了。 InputStream resContent = entity.getContent(); StringWriter writer = new StringWriter();字符串编码 = "UTF-8"; IOUtils.copy(resContent, writer, encoding);字符串结果 = writer.toString(); resContent.close(); writer.close();返回结果;
    • 我已经打开了一个问题来调查这个github.com/watson-developer-cloud/java-sdk/issues/117你能提供一个测试时使用的示例文件吗?我想确保我们解决您的问题
    猜你喜欢
    • 2021-09-28
    • 2015-07-14
    • 2015-09-26
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多