1

我想从我的 Java 代码中调用 IBM Bluemix 服务(比如 Text to Speech)。我已设法获取服务凭据和 URL,但之后如何调用它?

我见过一些例子,人们使用了类似于下面的代码,但想知道它是如何在输出 wav 流的文本到语音中工作的。

  String profileString = ex.execute(profileRequest)
         .handleResponse(new ResponseHandler<String>() {
    @Override
     public String handleResponse(HttpResponse r)
      throws ClientProtocolException, IOException {
      }
    }

有人可以建议优先吗?

4

1 回答 1

2

下面的链接有一个 Java 代码示例,说明如何使用 Watson 文本转语音服务。

https://github.com/watson-developer-cloud/text-to-speech-java

你应该在DemoServlet.java课堂上寻找这样的东西:

@Override
    protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
        if (req.getParameter("text") == null || req.getParameter("voice") == null) {
            req.getRequestDispatcher("/index.jsp").forward(req, resp);
        } else {
            boolean download = false;
            if (req.getParameter("download") != null && req.getParameter("download").equalsIgnoreCase("true")) {
                download = true;
            }

            req.setCharacterEncoding("UTF-8");
            try {
                String queryStr = req.getQueryString();
                String url = baseURL + "/v1/synthesize";
                if (queryStr != null) {
                    url += "?" + queryStr;
                }
                URI uri = new URI(url).normalize();

                Request newReq = Request.Get(uri);
                newReq.addHeader("Accept", "audio/ogg; codecs=opus");

                Executor executor = Executor.newInstance().auth(username, password);
                Response response = executor.execute(newReq);
                if (download)
                {
                    resp.setHeader("content-disposition", "attachment; filename=transcript.ogg");
                }
                ServletOutputStream servletOutputStream = resp.getOutputStream();
                response.returnResponse().getEntity()
                .writeTo(servletOutputStream);
                servletOutputStream.flush();
                servletOutputStream.close();
            } catch (Exception e) {
                // Log something and return an error message
                logger.log(Level.SEVERE, "got error: " + e.getMessage(), e);
                resp.setStatus(HttpStatus.SC_BAD_GATEWAY);
            }
        }
    }

最后,下面的链接包含有关如何创建 Java war 文件并部署到 Bluemix 的说明:

https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/getting_started/gs-full-java.shtml

于 2015-11-05T03:07:30.793 回答