1

我想從我的Java代碼中調用IBM Bluemix服務(比如說文本到語音)。 我已經設法獲得服務憑據和URL,但我怎樣才能調用它?如何發送來自java的bluemix wav流響應

我見過一些例子,其中人們使用類似於下面的代碼,但不知道它是如何工作的文本到語音輸出wav流。

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

任何人都可以優先建議嗎?

+0

https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/text-to-speech/api/v1/#intro督導 – ergonaut

+0

我同意,但使用Java我怎麼能得到的音頻/ WAV,音頻/ ogg流格式的響應? – ItsMyFist

回答

2

下面的鏈接有一個關於如何使用Watson文本到語音轉換服務的Java代碼示例。

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

+0

太棒了,這就是我要找的。將刷新的數據在客戶端自動播放,即在Chrome瀏覽器中播放? – ItsMyFist

+0

是的,我相信 - 它應該適用於Chrome和Firefox。 –

相關問題