<br />
<b>Warning</b>:  "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/qtranslate-x/qtranslate_frontend.php</b> on line <b>497</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
<br />
<b>Warning</b>:  preg_replace(): Compilation failed: invalid range in character class at offset 4 in <b>/home/users/2/flatworld/web/memoecho.com/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php</b> on line <b>340</b><br />
{"id":685,"date":"2017-11-04T02:05:57","date_gmt":"2017-11-04T02:05:57","guid":{"rendered":"http:\/\/tech.memoecho.com\/?p=685"},"modified":"2017-11-04T02:05:57","modified_gmt":"2017-11-04T02:05:57","slug":"%e4%b8%ad%e6%96%87-ibm-watson-speech-to-text","status":"publish","type":"post","link":"http:\/\/tech.memoecho.com\/zh\/ai\/%e4%b8%ad%e6%96%87-ibm-watson-speech-to-text\/","title":{"rendered":"IBM Watson Speech to Text"},"content":{"rendered":"<!-- WP QUADS Content Ad Plugin v. 2.0.19 -->\n<div class=\"quads-location quads-ad2\" id=\"quads-ad2\" style=\"float:none;margin:0px;\">\n\n <!-- WP QUADS - Quick AdSense Reloaded v.2.0.19 Content AdSense async --> \n\n\n<script type=\"text\/javascript\" >\nvar quads_screen_width = document.body.clientWidth;\nif ( quads_screen_width >= 1140 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width >= 1024  && quads_screen_width < 1140 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width >= 768  && quads_screen_width < 1024 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width < 768 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }\n<\/script>\n\n <!-- end WP QUADS --> \n\n\n<\/div>\n<p>Watson \u7684\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u8bc6\u522b\u51c6\u786e\u7387\u4f1a\u53d7\u5230\u8bed\u97f3\u8f93\u5165\u8d28\u91cf\u7684\u5f71\u54cd\uff0c\u4f46\u51ed\u501f Watson \u5f3a\u5927\u7684\u8ba4\u77e5\u8ba1\u7b97\u80fd\u529b\uff0c\u4ecd\u80fd\u5728\u67d0\u4e9b\u5355\u8bcd\u53d1\u97f3\u6a21\u7cca\u65f6\uff0c\u6839\u636e\u4e0a\u4e0b\u6587\u6765\u63a8\u65ad\u51fa\u8be5\u5355\u8bcd\u4ee5\u4fdd\u8bc1\u6574\u53e5\u8bdd\u7684\u6d41\u7545\u3002\u901a\u8fc7\u5bf9\u6bd4\uff0c\u7b14\u8005\u53d1\u73b0 Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u8bc6\u522b\u7387\u4e5f\u9ad8\u4e8e\u5176\u4ed6\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u3002\u76ee\u524d\u5173\u4e8e\u8be5\u670d\u52a1\u7684\u6587\u6863\u4ee5\u53ca\u5e94\u7528\u670d\u52a1\u63a5\u53e3\u4ecb\u7ecd\u5728 IBM Bluemix \u4e2d\u53ef\u4ee5\u627e\u5230\uff0c\u4f46\u662f\u8fd9\u4e9b\u6587\u6863\u6d89\u53ca\u5185\u5bb9\u7565\u663e\u7b80\u5355\uff0c\u5f00\u53d1\u4eba\u5458\u5728\u9605\u8bfb\u548c\u5b9e\u8df5\u65f6\u4ecd\u4f1a\u9047\u5230\u5f88\u591a\u95ee\u9898\u3002\u672c\u6587\u5c06\u9488\u5bf9\u8be5\u670d\u52a1\u505a\u8be6\u7ec6\u4ecb\u7ecd\uff0c\u89e3\u8bfb\u5176 API\uff0c\u5e76\u7ed9\u51fa\u4e00\u4e2a\u57fa\u4e8e Java \u7684\u6f14\u793a\u5b9e\u4f8b\uff0c\u5e0c\u671b\u501f\u6b64\u629b\u7816\u5f15\u7389\uff0c\u4f7f\u60a8\u80fd\u5bf9\u6b64\u670d\u52a1\u6709\u66f4\u6df1\u523b\u7684\u7406\u89e3\uff0c\u5408\u7406\u4f7f\u7528\u8be5\u670d\u52a1\u6765\u5f00\u53d1\u5f3a\u5927\u7684\u5e94\u7528\u3002<\/p>\n<h2 id=\"2IBMWatson\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4ecb\u7ecdoutline\" class=\"ibm-h2\">IBM Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4ecb\u7ecd<\/h2>\n<p>\u4f7f\u7528 IBM id \u767b\u5f55\u5230 Bluemix \u540e\uff0c\u5728 Catalog \u4e2d\u53ef\u4ee5\u627e\u5230\u6240\u6709\u53ef\u7528\u7684 IBM Watson \u670d\u52a1\uff0c\u5982\u56fe 1 \u6240\u793a\uff1a<\/p>\n<h5 id=\"2.0.1.\u56fe 1. Bluemix \u4e2d\u7684 IBM Waston \u670d\u52a1 |outline\" class=\"ibm-h5\">\u56fe 1. Bluemix \u4e2d\u7684 IBM Waston \u670d\u52a1<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index575.png\" alt=\"Bluemix \u4e2d\u7684 IBM Waston \u670d\u52a1\" width=\"553\" height=\"269\" \/><\/p>\n<p>Speech to Text \u670d\u52a1\u4e8e 2015 \u5e74 3 \u6708\u4efd\u5728 Bluemix Watson \u670d\u52a1\u76ee\u5f55\u4e0b\u5f00\u653e\uff0c\u867d\u7136\u5176\u4ecd\u5c5e\u4e8e\u6d4b\u8bd5\u7248\u672c\uff0c\u4f46\u5176\u57fa\u672c\u529f\u80fd\u5df2\u80fd\u6b63\u5e38\u8fd0\u884c\uff0c\u8bc6\u522b\u7387\u4e5f\u5df2\u9ad8\u51fa\u4e1a\u754c\u5927\u591a\u6570\u82f1\u6587\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u3002\u4ece\u8be5\u670d\u52a1\u7684\u5b98\u65b9\u4ecb\u7ecd\u4e2d\uff0c\u53ef\u4ee5\u4e86\u89e3\u5230\u76ee\u524d\u6240\u652f\u6301\u7684\u8bed\u97f3\u8f93\u5165\u5305\u542b\u4ee5\u4e0b\u4e24\u5927\u7c7b\uff1a<\/p>\n<h3 id=\"2.1.\u901a\u8fc7\u9ea6\u514b\u98ce\u5b9e\u65f6\u5f55\u5236\u7684\u97f3\u9891\u6d41 |outline\" class=\"ibm-h3\">\u901a\u8fc7\u9ea6\u514b\u98ce\u5b9e\u65f6\u5f55\u5236\u7684\u97f3\u9891\u6d41<\/h3>\n<p>\u76ee\u524d\u4e1a\u754c\u7c7b\u4f3c\u7684\u529f\u80fd\u51fa\u73b0\u5728\u67d0\u4e9b\u8bed\u97f3\u8f93\u5165\u6cd5\u91cc\uff0c\u8bf4\u51fa\u7684\u5355\u8bcd\u88ab\u8f6c\u5316\u6210\u6587\u5b57\u4ee5\u8fbe\u5230\u6587\u5b57\u8f93\u5165\u7684\u76ee\u7684\u3002\u4e8b\u5b9e\u4e0a\uff0cWatson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u5bf9\u5b9e\u65f6\u97f3\u9891\u6d41\u7684\u89e3\u6790\u8bc6\u522b\uff0c\u4e0e\u4e0a\u8ff0\u7684\u8bed\u97f3\u8f93\u5165\u6cd5\u5b8c\u5168\u4e0d\u540c\u3002Watson \u5728\u8fdb\u884c\u8bed\u97f3\u8bc6\u522b\u65f6\uff0c\u5e76\u4e0d\u4ec5\u4ec5\u5bf9\u97f3\u9891\u6d41\u4e2d\u7684\u5355\u8bcd\u9010\u4e00\u8bc6\u522b\uff0c\u800c\u662f\u4f1a\u7ed3\u5408\u5355\u8bcd\u6240\u5904\u7684\u4e0a\u4e0b\u6587\uff0c\u66f4\u51c6\u786e\u5730\u89e3\u6790\u5355\u8bcd\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u89c2\u5bdf\u5230\uff0cWatson \u5728\u8fdb\u884c\u8bed\u97f3\u5b9e\u65f6\u8bc6\u522b\u65f6\uff0c\u4e4b\u524d\u8bc6\u522b\u7684\u524d\u534a\u53e5\u7684\u5185\u5bb9\uff0c\u6709\u53ef\u80fd\u4f1a\u5728\u540e\u534a\u53e5\u88ab\u8bc6\u522b\u65f6\u53d1\u751f\u6539\u53d8\u3002<\/p>\n<h3 id=\"2.2.\u4e8b\u5148\u5f55\u5236\u597d\u7684\u97f3\u9891\u6587\u4ef6 |outline\" class=\"ibm-h3\">\u4e8b\u5148\u5f55\u5236\u597d\u7684\u97f3\u9891\u6587\u4ef6<\/h3>\n<p>\u76ee\u524d Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u652f\u6301\u7684\u97f3\u9891\u7f16\u7801\u6709\u4e24\u79cd\uff1awav \u548c flac\u3002\u9664\u7f16\u7801\u5916\uff0c\u97f3\u9891\u6587\u4ef6\u7684\u58f0\u9053\u6570\u3001\u7801\u7387\u53ca\u9891\u7387\u7b49\u90fd\u9700\u8981\u540c\u97f3\u9891\u6587\u4ef6\u4e00\u8d77\u4f20\u9012\u7ed9 Watson\u3002\u8fd9\u4e9b\u53c2\u6570\u5982\u679c\u51fa\u73b0\u4e0d\u4e00\u81f4\uff0c\u5c06\u4f1a\u5bf9\u6700\u540e\u7684\u8bc6\u522b\u7ed3\u679c\u4ea7\u751f\u5f88\u5927\u5f71\u54cd\u3002\u4f8b\u5982\uff0cWatson \u5728 Bluemix \u4e0a\u516c\u5f00\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u6f14\u793a\uff08<a href=\"https:\/\/speech-to-text-demo.mybluemix.net\/\">https:\/\/speech-to-text-demo.myBluemix.net\/<\/a>\uff09\uff0c\u7b14\u8005\u5c06\u5176\u97f3\u9891\u6587\u4ef6\u66ff\u6362\u6210\u81ea\u5df1\u51c6\u5907\u7684\u6587\u4ef6\u8fdb\u884c\u8bc6\u522b\uff0c\u4f46\u6ca1\u6709\u4fee\u6539\u7a0b\u5e8f\u91cc\u7684\u53c2\u6570\u4f7f\u5176\u4e0e\u81ea\u5df1\u7684\u6587\u4ef6\u4e00\u81f4\uff0c\u4ece\u800c\u5f71\u54cd\u4e86\u8bc6\u522b\u7ed3\u679c\uff0c\u4e0e\u5b9e\u9645\u5185\u5bb9\u5dee\u522b\u5de8\u5927\u3002<\/p>\n<h2 id=\"3Watson\u8bed\u97f3\u8bc6\u522b\u670d\u52a1API\u8be6\u89e3outline\" class=\"ibm-h2\">Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1 API \u8be6\u89e3<\/h2>\n<p>Watson \u670d\u52a1\u7684 API \u5747\u662f\u4ee5 RESTful \u7684\u65b9\u5f0f\u7ed9\u51fa\uff0c\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4e5f\u4e0d\u4f8b\u5916\u3002API \u7684\u5b98\u65b9\u4ecb\u7ecd\uff08<a href=\"http:\/\/www.ibm.com\/smarterplanet\/us\/en\/ibmwatson\/developercloud\/apis\/#!\/speech-to-text\">http:\/\/www.ibm.com\/smarterplanet\/us\/en\/ibmwatson\/developercloud\/apis\/#!\/speech-to-text<\/a>\uff09\u5217\u51fa\u4e86 10 \u4e2a\u65b9\u6cd5\uff0c\u65b9\u6cd5 v1\/recognize \u662f\u6240\u6709\u65b9\u6cd5\u7684\u6838\u5fc3\uff0c\u4e3b\u8981\u8d1f\u8d23\u8bed\u97f3\u6587\u4ef6\u7684\u8bc6\u522b\u3002\u5176\u4ed6\u65b9\u6cd5\u6709\u8d1f\u8d23\u83b7\u53d6 session \u7684\uff0c\u6709\u8d1f\u8d23\u83b7\u53d6\u8bc6\u522b\u8bed\u8a00\u7684\u6a21\u5757\u7684\uff08\u76ee\u524d\u53ea\u652f\u6301\u82f1\u6587\u7684\u8bc6\u522b\uff09\uff0c\u4e5f\u6709\u8d1f\u8d23\u591a\u6587\u4ef6\u540c\u65f6\u8bc6\u522b\u7684\u3002\u4e0b\u9762\u5c06\u5bf9 v1\/recognize \u65b9\u6cd5\u8fdb\u884c\u8be6\u7ec6\u5256\u6790\u3002<\/p>\n<p>\u8be5\u65b9\u6cd5\u4e3a HTTP POST \u65b9\u6cd5\uff0c\u652f\u6301\u4ee5\u4e0b\u51e0\u79cd\u53c2\u6570\uff1a<\/p>\n<h3 id=\"3.1.Content-Type|outline\" class=\"ibm-h3\">Content-Type<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e HTTP HEADER \u4e2d\uff0c\u7528\u4e8e\u63cf\u8ff0\u5f53\u524d\u6587\u4ef6\u7684\u683c\u5f0f\u3002\u5982\u201caudio\/flac; rate=48000; channels=2\u201d\uff0c\u4ee3\u8868\u7684\u662f\u8be5\u6587\u4ef6\u662f flac \u7f16\u7801\u3001\u9891\u7387\u662f 48khz\u3001\u53cc\u58f0\u9053\u3002\u97f3\u9891\u6587\u4ef6\u7684\u8be6\u7ec6\u53c2\u6570\u4fe1\u606f\u53ef\u4ee5\u901a\u8fc7\u4e13\u4e1a\u97f3\u9891\u8f6f\u4ef6\u6216\u8005\u67d0\u4e9b\u97f3\u9891\u7ba1\u7406\u6216\u64ad\u653e\u8f6f\u4ef6\uff08\u5982 itunes\uff09\u8fdb\u884c\u67e5\u770b\u3002\u5982\u524d\u6587\u6240\u8ff0\uff0c\u8be5\u53c2\u6570\u7684\u53d6\u503c\u5fc5\u987b\u4e0e\u97f3\u9891\u6587\u4ef6\u4e25\u683c\u4e00\u81f4\uff0c\u5426\u5219\u5c06\u4f1a\u5f71\u54cd\u6700\u7ec8\u7684\u8bc6\u522b\u7ed3\u679c\u3002<\/p>\n<h3 id=\"3.2.Transfer-encoding|outline\" class=\"ibm-h3\">Transfer-encoding<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e HTTP HEADER \u4e2d\uff0c\u9ed8\u8ba4\u503c\u4e3a\u7a7a\uff0c\u53ef\u9009\u503c\u4e3a chunked\u3002\u5f53\u5176\u88ab\u8bbe\u7f6e\u4e3a chunked \u65f6\uff0c\u97f3\u9891\u6587\u4ef6\u5728\u4e0a\u4f20\u65f6\u4f1a\u4f7f\u7528\u6d41\u6a21\u5f0f\u3002\u800c Watson \u89c4\u5b9a\u97f3\u9891\u6587\u4ef6\u7684\u957f\u5ea6\u8d85\u8fc7 5 \u5206\u949f\u65f6\uff0c\u9700\u8981\u4f7f\u7528\u6d41\u6a21\u5f0f\u4e0a\u4f20\u3002<\/p>\n<h3 id=\"3.3.Continuous|outline\" class=\"ibm-h3\">Continuous<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e POST \u8bf7\u6c42\u7684 query \u53c2\u6570\u4e2d\uff0c\u53ef\u9009\u503c\u4e3a true \u548c false\uff0c\u9ed8\u8ba4\u4e3a false\u3002\u5f53\u8be5\u53c2\u6570\u88ab\u8bbe\u7f6e\u4e3a true \u65f6\uff0cWatson \u53ef\u81ea\u52a8\u8bc6\u522b\u97f3\u9891\u6587\u4ef6\u4e2d\u7684\u505c\u987f\uff0c\u5e76\u8fd4\u56de\u4ee5\u505c\u987f\u4e3a\u5206\u5272\u7684\u591a\u4e2a\u8bc6\u522b\u7ed3\u679c\u3002\u5f53\u5176\u88ab\u8bbe\u7f6e\u4e3a false \u65f6\uff0cWatson \u4ec5\u4f1a\u8fd4\u56de\u7b2c\u4e00\u5904\u505c\u987f\u4e4b\u524d\u7684\u97f3\u9891\u8bc6\u522b\u7ed3\u679c\u3002\u56e0\u6b64\uff0c\u5f53\u4e0a\u4f20\u7684\u97f3\u9891\u6587\u4ef6\u5305\u542b\u591a\u53e5\u8bdd\u65f6\uff0c\u5efa\u8bae\u5c06\u8be5\u53c2\u6570\u8bbe\u7f6e\u4e3a true\u3002<\/p>\n<h3 id=\"3.4.X-logging|outline\" class=\"ibm-h3\">X-logging<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e POST \u8bf7\u6c42\u7684 HEADER \u91cc\uff0c\u53ef\u9009\u503c\u4e3a 0 \u548c 1\uff0c\u9ed8\u8ba4\u4e3a 1\u3002\u5f53\u8be5\u53c2\u6570\u88ab\u8bbe\u7f6e\u4e3a 0 \u65f6\uff0c\u670d\u52a1\u5668\u5728\u8bc6\u522b\u5b8c\u97f3\u9891\u6587\u4ef6\u540e\uff0c\u4f1a\u7acb\u5373\u5c06\u8be5\u6587\u4ef6\u548c\u8bc6\u522b\u7ed3\u679c\u6e05\u7406\u6389\u3002<\/p>\n<h2 id=\"4Java\u5b9e\u4f8b\u5256\u6790\u4e0e\u5e94\u7528outline\" class=\"ibm-h2\">Java \u5b9e\u4f8b\u5256\u6790\u4e0e\u5e94\u7528<\/h2>\n<p>\u4e0a\u6587\u5206\u6790\u4e86 Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4e3b\u8981\u7684 API \u53ca\u53c2\u6570\uff0c\u5728\u6b64\u57fa\u7840\u4e0a\uff0c\u672c\u8282\u4f7f\u7528 Java \u8bed\u8a00\u5177\u4f53\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u8fd9\u4e9b API \u6765\u8fdb\u884c\u8bed\u97f3\u8bc6\u522b\u3002\u7531\u4e8e Bluemix \u4e2d\u5173\u4e8e\u8be5\u90e8\u5206\u7684\u5b9e\u4f8b\u4ee5 Node.js \u4e3a\u4e3b\uff0c\u6ca1\u6709\u5305\u542b Java \u90e8\u5206\uff0c\u6240\u4ee5\u672c\u8282\u4f1a\u6d89\u53ca\u8bf8\u591a\u7ec6\u8282\uff0c\u4ee5\u65b9\u4fbf\u60a8\u8fdb\u884c\u5b9e\u9a8c\u3002<\/p>\n<h3 id=\"4.1.Java \u5b9e\u4f8b\u529f\u80fd\u4ecb\u7ecd |outline\" class=\"ibm-h3\">Java \u5b9e\u4f8b\u529f\u80fd\u4ecb\u7ecd<\/h3>\n<p>\u672c\u5b9e\u4f8b\u529f\u80fd\u662f\u901a\u8fc7 IBM Waston \u8bed\u97f3\u670d\u52a1\uff0c\u8bc6\u522b\u4e0a\u4f20\u5230\u670d\u52a1\u5668\u4e0a\u7684\u97f3\u9891\u6587\u4ef6\u3002\u7528\u6237\u53ef\u4ee5\u5728\u6587\u4ef6\u4e0a\u4f20\u754c\u9762\u9009\u62e9\u97f3\u9891\u6587\u4ef6\u8fdb\u884c\u4e0a\u4f20\uff0c\u5e76\u5c06\u8be5\u6587\u4ef6\u4fdd\u5b58\u5230\u670d\u52a1\u5668\u7aef\u3002\u4e4b\u540e\uff0c\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u97f3\u9891\u8bc6\u522b\u9875\u9762\u5bf9\u4e0a\u4f20\u7684\u97f3\u9891\u6587\u4ef6\u8fdb\u884c\u667a\u80fd\u8bc6\u522b\uff0c\u8bc6\u522b\u7684\u7ed3\u679c\u4f1a\u663e\u793a\u5728\u97f3\u9891\u8bc6\u522b\u9875\u9762\u4e0a\u3002\u901a\u8fc7\u672c\u5b9e\u4f8b\u53ef\u4ee5\u5c06\u97f3\u9891\u6587\u4ef6\u8f6c\u5316\u4e3a\u6587\u5b57\uff0c\u975e\u5e38\u7b80\u5355\u5b9e\u7528\u3002<\/p>\n<p>\u672c\u5b9e\u4f8b\u91c7\u7528 Java Web \u67b6\u6784\uff0c\u524d\u7aef\u9875\u9762\u901a\u8fc7 HTML \u548c jQuery \u5b9e\u73b0\uff0c\u670d\u52a1\u5668\u7aef\u529f\u80fd\u901a\u8fc7 Java \u5b9e\u73b0\uff0c\u524d\u7aef\u548c\u670d\u52a1\u5668\u7aef\u901a\u8fc7 Post \u7684\u65b9\u5f0f\u8fdb\u884c\u4ea4\u4e92\u3002\u672c\u5b9e\u4f8b\u53ef\u4ee5\u90e8\u7f72\u5728 Tomcat \u670d\u52a1\u5668\u4e0a\u8fd0\u884c\u3002<\/p>\n<h3 id=\"4.2.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u754c\u9762 |outline\" class=\"ibm-h3\">\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u754c\u9762<\/h3>\n<p>\u8be5\u754c\u9762\u7684\u529f\u80fd\u662f\u7528\u6765\u9009\u62e9\u4e0a\u4f20\u6587\u4ef6\uff0c\u5e76\u4fdd\u5b58\u8be5\u6587\u4ef6\u5230\u670d\u52a1\u5668\u7aef\u3002\u670d\u52a1\u5668\u7aef\u7684\u5b9e\u73b0\u4f1a\u5728\u540e\u9762\u7684\u6587\u7ae0\u4e2d\u8fdb\u884c\u4ecb\u7ecd\u3002\u9996\u5148\u5c55\u793a\u4e00\u4e0b\u754c\u9762\uff0c\u80fd\u591f\u8ba9\u8bfb\u8005\u6709\u4e2a\u76f4\u89c2\u7684\u8ba4\u8bc6\u3002\u5982\u56fe 2 \u6240\u793a\uff0c\u9875\u9762\u4e0a\u6709\u4e00\u4e2a choose file \u6309\u94ae\u548c\u4e00\u4e2a upload \u6309\u94ae\u3002\u901a\u8fc7 choose file \u6309\u94ae\u53ef\u4ee5\u6d4f\u89c8\u5e76\u9009\u62e9\u7535\u8111\u4e0a\u5b58\u653e\u7684\u97f3\u9891\u6587\u4ef6\uff0c\u6240\u9009\u62e9\u7684\u6587\u4ef6\u540d\u4f1a\u5728\u6309\u94ae\u53f3\u8fb9\u663e\u793a\u3002\u4e4b\u540e\u70b9\u51fb upload \u6309\u94ae\u53ef\u4ee5\u5c06\u8be5\u6587\u4ef6\u4e0a\u4f20\u5230\u670d\u52a1\u5668\u4e0a\u3002<\/p>\n<h5 id=\"4.2.1.\u56fe 2.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 2.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index2840.png\" alt=\"\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762\" width=\"420\" height=\"286\" \/><\/p>\n<p>\u97f3\u9891\u4e0a\u4f20\u9875\u9762\u901a\u8fc7 HTML \u5b9e\u73b0\uff0c\u9875\u9762\u4e3b\u4f53\u662f\u4e00\u4e2a form \u8868\u683c\uff0c\u70b9\u51fb upload \u6309\u94ae\u4f1a\u5c06\u8868\u683c\u4e2d\u7684\u4fe1\u606f\uff0c\u5305\u62ec\u9009\u4e2d\u7684\u6587\u4ef6\u5185\u5bb9\uff0c\u901a\u8fc7 POST \u65b9\u6cd5\u63d0\u4ea4\u5230\/SpeechToText\/UploadFile \u8fd9\u4e2a servlet\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0cform \u8868\u683c\u4e2d\u7684 enctype \u53c2\u6570\u5fc5\u987b\u4e3a multipart\/form-data\uff0c\u5426\u5219\u5bf9\u5e94 servlet \u4e2d\u65e0\u6cd5\u8bfb\u53d6\u4e0a\u4f20\u7684\u6587\u4ef6\u5185\u5bb9\u3002\u9875\u9762\u8bbe\u8ba1\u7684\u4e3b\u4f53\u4ee3\u7801\u89c1\u6e05\u5355 1\u3002<\/p>\n<h5 id=\"4.2.2.\u6e05\u5355 1.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762\u4ee3\u7801\u5b9e\u73b0 |outline\" class=\"ibm-h5\">\u6e05\u5355 1.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762\u4ee3\u7801\u5b9e\u73b0<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_208930\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">id<\/code> <code class=\"htmlscript plain\">= <\/code><code class=\"htmlscript plain\">\"selectFile\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">form<\/code> <code class=\"htmlscript color1\">id<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"uploadFile\"<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"wrapper\"<\/code> <code class=\"htmlscript color1\">action<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"\/SpeechToText\/UploadFile\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript color1\">method<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"post\"<\/code> <code class=\"htmlscript color1\">enctype<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"multipart\/form-data\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">= <\/code><code class=\"htmlscript plain\">\"form-item\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"form-item-attribute\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">label<\/code><code class=\"htmlscript plain\">&gt;Audio File:&lt;\/<\/code><code class=\"htmlscript plain\">label<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"form-item-value\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">input<\/code> <code class=\"htmlscript color1\">type<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"file\"<\/code> <code class=\"htmlscript color1\">name<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"files\"<\/code> <code class=\"htmlscript color1\">id<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"fileupload_input\"<\/code> <code class=\"htmlscript plain\">\/&gt;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"form-item-value\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">lable<\/code><code class=\"htmlscript plain\">&gt;(Maximum File size is 4MB)&lt;\/<\/code><code class=\"htmlscript plain\">lable<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">form<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">button<\/code> <code class=\"htmlscript color1\">id<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"upload\"<\/code><code class=\"htmlscript plain\">&gt;upload&lt;\/<\/code><code class=\"htmlscript plain\">button<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h3 id=\"4.3.\u6587\u4ef6\u4e0a\u4f20\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1 |outline\" class=\"ibm-h3\">\u6587\u4ef6\u4e0a\u4f20\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1<\/h3>\n<p>\u670d\u52a1\u5668\u7aef\u91c7\u7528\u6807\u51c6\u7684 Java Web \u67b6\u6784\u3002\u8981\u5728\u524d\u7aef\u9875\u9762\u8c03\u7528\u67d0\u4e2a servlet \u5fc5\u987b\u5728 web.xml \u5b9a\u4e49\u8be5 servlet\uff0c\u8fd9\u4e00\u8fc7\u7a0b\u5728\u8fd9\u91cc\u4e0d\u5728\u7ec6\u8ff0\u3002\u6587\u4ef6\u4e0a\u4f20\u670d\u52a1\u5668\u7aef\u7528\u6765\u63a5\u53d7\u524d\u7aef\u53d1\u8fc7\u6765\u7684 Post \u7684\u8bf7\u6c42\uff0c\u5e76\u5c06\u8bf7\u6c42\u4e2d\u7684\u6587\u4ef6\u4fdd\u5b58\u5230\u670d\u52a1\u5668\u6307\u5b9a\u76ee\u5f55\u4e2d\u3002<\/p>\n<p>\u670d\u52a1\u5668\u7aef\u7684 Upload \u7c7b\u91cc\u9762\u7684 doPost \u65b9\u6cd5\u7528\u6765\u5904\u7406\u524d\u7aef\u53d1\u9001\u8fc7\u6765\u7684 Post \u8bf7\u6c42\uff0cdoPost \u65b9\u6cd5\u5982\u6e05\u5355 2 \u6240\u793a\u3002doPost \u65b9\u6cd5\u4f1a\u5bf9 HTTP \u8bf7\u6c42\u8fdb\u884c\u89e3\u6790\uff0c\u4ee5\u83b7\u53d6 HTTP \u8bf7\u6c42\u4e2d\u5305\u542b\u7684 Post \u8bf7\u6c42\u5185\u5bb9\uff0c\u5e76\u5b58\u653e\u5728 List iter \u53d8\u91cf\u4e2d\uff0c\u7136\u540e\u904d\u5386 iter \u53d8\u91cf\u4ee5\u83b7\u53d6 POST \u8fc7\u6765\u7684\u6240\u6709\u5185\u5bb9\u3002\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u53ea\u5173\u5fc3 POST \u8fc7\u6765\u7684\u6587\u4ef6\uff0c\u800c\u6587\u4ef6\u7684\u5904\u7406\u662f\u5728 processUploadFile \u65b9\u6cd5\u4e2d\u3002\u5728 ProcessUploadFile \u4e2d\uff0c\u901a\u8fc7 item.getName \u65b9\u6cd5\u53ef\u4ee5\u83b7\u53d6\u4e0a\u4f20\u7684\u6587\u4ef6\u540d\uff0c\u901a\u8fc7 item.write \u65b9\u6cd5\u53ef\u4ee5\u5c06\u6587\u4ef6\u4fdd\u5b58\u5230\u6307\u5b9a\u7684\u8def\u5f84\u3002\u4e3a\u4e86\u9632\u6b62\u540c\u540d\u6587\u4ef6\u88ab\u8986\u76d6\u95ee\u9898\uff0c\u53ef\u4ee5\u628a\u65f6\u95f4\u6233\u62fc\u63a5\u5230\u6587\u4ef6\u540d\u4e2d\u8fdb\u884c\u4fdd\u5b58\u3002<\/p>\n<p>\u901a\u8fc7\u8fd9\u6837\u7684\u8bbe\u8ba1\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u524d\u7aef Post \u8fc7\u6765\u7684\u6587\u4ef6\u4fdd\u5b58\u5230\u670d\u52a1\u5668\u6307\u5b9a\u76ee\u5f55\u4e2d\uff0c\u5e76\u53ef\u4ee5\u89e3\u51b3\u540c\u540d\u6587\u4ef6\u88ab\u8986\u76d6\u7684\u95ee\u9898\u3002\u6587\u4ef6\u4fdd\u5b58\u6210\u529f\u4ee5\u540e\uff0c\u901a\u8fc7 HTTPServletResponse \u7684 sendRedirect \u65b9\u6cd5\u5c06\u9875\u9762\u91cd\u5b9a\u4f4d\u5230\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\uff0c\u540c\u65f6\u9700\u8981\u5c06\u670d\u52a1\u5668\u4e0a\u7684\u6587\u4ef6\u540d\u653e\u5728 URL \u4e2d\u4f20\u9012\u5230\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u3002<\/p>\n<h5 id=\"4.3.1.\u6e05\u5355 2.\u670d\u52a1\u5668\u7aef Upload \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 2.\u670d\u52a1\u5668\u7aef Upload \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_583727\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public void doPost(HTTPServletRequest req, HTTPServletResponse res)\u00a0 <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">throws IOException, ServletException\u00a0 <\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">{\u00a0 <\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">try{\u00a0 <\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">DiskFileItemFactory diskFactory = new DiskFileItemFactory();\u00a0 <\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">\/\/ threshold \u6781\u9650\u3001\u4e34\u754c\u503c\uff0c\u5373\u786c\u76d8\u7f13\u5b58 1M\u00a0 <\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">diskFactory.setSizeThreshold(4 * 1024);\u00a0 <\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">\/\/ repository \u8d2e\u85cf\u5ba4\uff0c\u5373\u4e34\u65f6\u6587\u4ef6\u76ee\u5f55\u00a0 <\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">diskFactory.setRepository(new File(tempPath)); <\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">ServletFileUpload upload = new ServletFileUpload(diskFactory);\u00a0 <\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">\/\/ \u8bbe\u7f6e\u5141\u8bb8\u4e0a\u4f20\u7684\u6700\u5927\u6587\u4ef6\u5927\u5c0f 4M\u00a0 <\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">upload.setSizeMax(4 * 1024 * 1024);\u00a0 <\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">\/\/ \u89e3\u6790 HTTP \u8bf7\u6c42\u6d88\u606f\u5934\u00a0 <\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">List fileItems = upload.parseRequest(req);\u00a0 <\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">Iterator iter = fileItems.iterator();<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">while(iter.hasNext())\u00a0 <\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">{\u00a0 <\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">FileItem item = (FileItem)iter.next();\u00a0 <\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">if(item.isFormField())\u00a0 <\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">{\u00a0 <\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">System.out.println(\"\u5904\u7406\u8868\u5355\u5185\u5bb9 ...\");\u00a0 <\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">processFormField(item);\u00a0 <\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">}else{\u00a0 <\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">System.out.println(\"\u5904\u7406\u4e0a\u4f20\u7684\u6587\u4ef6 ...\");\u00a0 <\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">\/\/item \u91cc\u9762\u5305\u542b\u4e0a\u4f20\u7684\u6587\u4ef6\u540d\u548c\u6587\u4ef6\u5185\u5bb9<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">processUploadFile(item);\u00a0 <\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">}\u00a0 <\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">}\/\/ end while()\u00a0 <\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">\/\/pw.close(); <\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"htmlscript plain\">}catch(Exception e){\u00a0 <\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"htmlscript plain\">System.out.println(\"uploadFile \u53d1\u751f\u5f02\u5e38 ...\");\u00a0 <\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"htmlscript plain\">lastUpdatedFile = \"\";<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"htmlscript plain\">e.printStackTrace();\u00a0 <\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"htmlscript plain\">}\/\/ end try ... catch ...\u00a0 <\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"htmlscript plain\">if(\"\".equals(lastUpdatedFile))<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"htmlscript plain\">res.sendRedirect(\"\/SpeechToText\/index.html?upload=fail\");<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"htmlscript plain\">res.sendRedirect(\"\/SpeechToText\/index.html?upload=success&amp;uploadedFileName=\" + lastUpdatedFile);<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"htmlscript plain\">return;<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"htmlscript plain\">}\/\/ end doPost()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h3 id=\"4.4.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762 |outline\" class=\"ibm-h3\">\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762<\/h3>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762\u53ef\u4ee5\u8ba9\u7528\u6237\u6307\u5b9a\u97f3\u9891\u6587\u4ef6\u7684\u4e00\u4e9b\u53c2\u6570\uff0c\u70b9\u51fb translate \u5373\u53ef\u8bc6\u522b\u4e3a\u5bf9\u5e94\u6587\u5b57\u3002\u70b9\u51fb Back \u6309\u94ae\u53ef\u4ee5\u56de\u5230\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u754c\u9762\uff0c\u91cd\u65b0\u9009\u62e9\u6587\u4ef6\u8fdb\u884c\u4e0a\u4f20\u3002<\/p>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762\u5982\u56fe 3 \u6240\u793a\u3002\u5728\u70b9\u51fb translate \u8fdb\u884c\u8bc6\u522b\u4e4b\u524d\uff0c\u5fc5\u987b\u586b\u5199\u6216\u8005\u9009\u62e9 rate\u3001audio \u548c channel \u53c2\u6570\uff0c\u5982\u679c\u6ca1\u6709\u6b63\u786e\u586b\u5199\uff0c\u5c06\u65e0\u6cd5\u8bc6\u522b\u97f3\u9891\u6587\u4ef6\u5185\u5bb9\u3002\u8fd9\u4e9b\u53c2\u6570\u7684\u542b\u4e49\u5728 Waston \u8bed\u97f3\u8bc6\u522b\u670d\u52a1 API \u8be6\u89e3\u4e2d\u5df2\u7ecf\u4ecb\u7ecd\uff0c\u4e0d\u518d\u7ec6\u8ff0\u3002\u6b63\u5e38\u8bc6\u522b\u7ed3\u679c\u4f1a\u5728 result \u6846\u4e2d\u663e\u793a\uff0c\u5982\u56fe 4 \u6240\u793a\u3002<\/p>\n<h5 id=\"4.4.1.\u56fe 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index5885.png\" alt=\"\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\" width=\"369\" height=\"352\" \/><\/p>\n<h5 id=\"4.4.2.\u56fe 4.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u7ed3\u679c |outline\" class=\"ibm-h5\">\u56fe 4.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u7ed3\u679c<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index5904.png\" alt=\"\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u7ed3\u679c\" width=\"342\" height=\"335\" \/><\/p>\n<p>\u6e05\u5355 3 \u662f Translate \u529f\u80fd\u7684\u4ee3\u7801\u5b9e\u73b0\uff0c\u901a\u8fc7 Jquery \u6765\u83b7\u53d6\u9875\u9762\u53c2\u6570\uff0c\u63d0\u4ea4 translate \u8bf7\u6c42\u5230\u670d\u52a1\u7aef\/SpeechToText\/SpeechToText \u5bf9\u5e94\u7684 servlet\uff0c\u5e76\u6839\u636e\u670d\u52a1\u5668\u8fd4\u56de\u7684\u503c\uff08\u97f3\u9891\u6587\u4ef6\u5bf9\u5e94\u7684\u6587\u5b57\uff09\u586b\u5199\u5230 Result \u6846\u4e2d\u3002<\/p>\n<h5 id=\"4.4.3.\u6e05\u5355 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b Translate \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b Translate \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_814254\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">function translate()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">$(\"#selectFile\").hide();<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">$(\"#parameters\").hide();<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">$(\"#processing\").show();<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">$.post(\"\/SpeechToText\/SpeechToText\", <\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">filepath: getUrlParam(\"uploadedFileName\"),<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">audio: $(\"#audio\").val(),<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">rate: $(\"#rate\").val(),<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">channels : $(\"#channel\").val()<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">}, <\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">function(data,status){<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">$(\"#parameters\").show();<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">$(\"#processing\").hide();<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">if(status == 'success')<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">if(data){<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">$(\"#result\").val(data);<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">alert(\"Status: \" + status);<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">alert(\"Data(return value) is empty!\" + \"\\nStatus: \" + status);<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">alert(\"Data: \" + data + \"\\nStatus: \" + status);<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">);<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript plain\">};<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h3 id=\"4.5.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1 |outline\" class=\"ibm-h3\">\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1<\/h3>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u7528\u6765\u63a5\u53d7\u524d\u7aef\u53d1\u8fc7\u6765\u7684 Post \u7684\u8bf7\u6c42\uff0c\u5e76\u5c06\u5bf9\u5e94\u6587\u4ef6\u4e0a\u4f20\u5230 Waston \u670d\u52a1\u5668\u8fdb\u884c\u8bc6\u522b\uff0c\u5e76\u5c06\u8bc6\u522b\u7ed3\u679c\u8fd4\u56de\u7ed9\u524d\u7aef\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762\u3002<\/p>\n<p>\u4ecb\u7ecd\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1\u4e4b\u524d\uff0c\u9996\u5148\u4ecb\u7ecd\u4e00\u4e0b Bluemix \u4e2d Watson \u670d\u52a1\u7684 Crendential \u4fe1\u606f\u3002 \u6e05\u5355 4 \u5c55\u793a\u7684\u662f\u4f7f\u7528 Java \u8bed\u8a00\u6765\u83b7\u53d6\u5e76\u89e3\u6790 Watson \u670d\u52a1\u4e2d\u7684\u201cQuestion and Answer\u201d\u670d\u52a1\u7684 Credential \u4fe1\u606f\u3002\u5982\u679c\u8be5\u5e94\u7528\u662f\u90e8\u7f72\u5728 Bluemix \u7684 Liberty \u5bb9\u5668\u4e2d\uff0c\u5219\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cVCAP_SERVICES \u662f\u975e\u7a7a\u7684\u3002\u800c\u5f53\u5e94\u7528\u662f\u5728 Bluemix \u5916\u90e8\u65f6\uff0c\u6211\u4eec\u9700\u8981\u6307\u5b9a VCAP_SERVICES \u7684\u503c\uff0c\u5982\u6e05\u5355 4 \u7684\u7b2c\u4e09\u884c\u6240\u793a\u3002VCAP_SERVICES \u4e2d\u5b58\u50a8\u7684\u662f\u5f53\u524d\u5e94\u7528\u6240\u7ed1\u5b9a\u7684\u6240\u6709 Service \u7684 Credential \u4fe1\u606f\uff0c\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u6839\u636e Service \u7684\u6807\u8bc6 ID \u53d6\u51fa\u76f8\u5e94\u7684 Credential \u4fe1\u606f\u3002\u5728\u6e05\u5355 4 \u4e2d\uff0cQuestion and Answer \u670d\u52a1\u7684\u6807\u8bc6 ID \u4e3a Watson QAAPI-0.1\u3002\u4e4b\u540e\uff0c\u5bf9\u4e8e Credential \u4fe1\u606f\u7684\u89e3\u6790\u4ee5\u53ca\u8d4b\u503c\uff0c\u540c\u6837\u9002\u5e94\u4e8e\u5176\u4ed6 Bluemix \u670d\u52a1\u3002\u5728\u62ff\u5230\u4e86\u8fd9\u4e9b\u4fe1\u606f\u4e4b\u540e\uff0c\u4fbf\u53ef\u6839\u636e Bluemix \u670d\u52a1\u6240\u63d0\u4f9b\u7684\u8c03\u7528 API\uff0c\u8fdb\u884c\u5404\u79cd\u8bf7\u6c42\u64cd\u4f5c\u3002<\/p>\n<h5 id=\"4.5.1.\u6e05\u5355 4.\u4f7f\u7528 Java \u83b7\u53d6 Bluemix \u4e2d Watson \u670d\u52a1\u7684 Crendential \u4fe1\u606f\uff1a|outline\" class=\"ibm-h5\">\u6e05\u5355 4.\u4f7f\u7528 Java \u83b7\u53d6 Bluemix \u4e2d Watson \u670d\u52a1\u7684 Crendential \u4fe1\u606f\uff1a<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_2346\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">String VCAP_SERVICES = System.getenv(\"VCAP_SERVICES\");<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">if(VCAP_SERVICES ==null){<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">\/\/\u5c06 Watson \u670d\u52a1\u7684 Credential \u4fe1\u606f\u62f7\u8d1d\u81f3\u6b64\uff0c<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">VCAP_SERVICES=\"{ \\\"Watson QAAPI-0.1\\\" : [ { \\\"name\\\" : \\\"mt-svc\\\"......<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">\/\/\u6b64\u5904\u7565\u53bb\u540e\u9762\u5177\u4f53\u7528\u6237\u4fe1\u606f<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">if (VCAP_SERVICES != null) {<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">try {<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">JSONObject obj = (JSONObject)JSON.parse(VCAP_SERVICES);<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">JSONArray service = obj.getJSONArray(\"Watson QAAPI-0.1\");<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">\/\/ \u83b7\u53d6\u8be5\u670d\u52a1\u7684 Credential \u4fe1\u606f<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">JSONObject catalog = service.getJSONObject(0);<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">\/\/ \u89e3\u6790 Credential \u4fe1\u606f\uff0c\u5e76\u628a\u76f8\u5173\u5b57\u6bb5\u8d4b\u503c\u7ed9\u672c\u5730\u6210\u5458\u5c5e\u6027<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">JSONObject credentials = catalog.getJSONObject(\"credentials\");<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">endpoint = credentials.getString(\"uri\");<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">username = credentials.getString(\"userid\");<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">password = credentials.getString(\"password\");<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">} catch (Exception e) {<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u7684\u8fc7\u7a0b\u4e3b\u8981\u5728\u670d\u52a1\u5668\u7aef\u7684 speech2text \u65b9\u6cd5\u4e2d\u5b9e\u73b0\uff0cspeech2text \u65b9\u6cd5\u5982\u6e05\u5355 5 \u6240\u793a\u3002Speech2text \u65b9\u6cd5\u5c06\u4e0a\u4f20\u7684\u6587\u4ef6\u540d\u3001audio \u7c7b\u578b\u3001rate \u503c\u548c channel \u503c\u4f5c\u4e3a\u8f93\u5165\u53c2\u6570\u3002\u901a\u8fc7\u6587\u4ef6\u540d filename \u53ef\u4ee5\u627e\u5230\u670d\u52a1\u5668\u4e0a\u5b58\u653e\u7684\u5bf9\u5e94\u6587\u4ef6\uff0c\u548c audio \u6307\u3001rate \u503c\u548c channel \u503c\u4e00\u8d77\u8f6c\u5316\u4e3a FileEntity \u4f5c\u4e3a POST \u53c2\u6570\u63d0\u4ea4\u5230 Waston \u670d\u52a1\u5668\u3002Userid\u3001password \u662f\u8bbf\u95ee Waston \u670d\u52a1\u5668\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\uff0crestServerURL \u662f Waston \u670d\u52a1\u5668\u5bf9\u5916\u63d0\u4f9b\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u7ed3\u6784\uff0c\u8fd9\u4e09\u4e2a\u53d8\u91cf\u7684\u503c\u5728 credentials \u53d8\u91cf\u4e2d\u63d0\u53d6\u3002\u6709\u4e86\u8fd9\u4e9b\u53d8\u91cf\u4ee5\u540e\u5c31\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528 Waston \u670d\u52a1\u5668\u7684\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u961f\u97f3\u9891\u6587\u4ef6\u8fdb\u884c\u8bc6\u522b\u3002\u8c03\u7528 Waston \u670d\u52a1\u5668\u7684\u4ee3\u7801\u662f\u56fa\u5b9a\u7684\uff0c\u53ef\u4ee5\u53c2\u8003\u6e05\u5355 5\u3002Waston \u670d\u52a1\u5668\u8bc6\u522b\u6210\u529f\u4ee5\u540e\u4f1a\u8fd4\u56de HTTPEntity entity \u53d8\u91cf\uff0c\u901a\u8fc7 EntityUtils.toString \u65b9\u6cd5\u5373\u53ef\u4ece entity \u53d8\u91cf\u4e2d\u63d0\u53d6\u8bc6\u522b\u51fa\u6765\u7684\u6587\u5b57\u3002<\/p>\n<!-- WP QUADS Content Ad Plugin v. 2.0.19 -->\n<div class=\"quads-location quads-ad2\" id=\"quads-ad2\" style=\"float:none;margin:0px;\">\n\n <!-- WP QUADS - Quick AdSense Reloaded v.2.0.19 Content AdSense async --> \n\n\n<script type=\"text\/javascript\" >\nvar quads_screen_width = document.body.clientWidth;\nif ( quads_screen_width >= 1140 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width >= 1024  && quads_screen_width < 1140 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width >= 768  && quads_screen_width < 1024 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width < 768 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }\n<\/script>\n\n <!-- end WP QUADS --> \n\n\n<\/div>\n\n<h5 id=\"4.5.2.\u6e05\u5355 5.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b speech2text \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 5.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b speech2text \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_240332\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public static String speech2text(String fileName, String audio, String rate, String channel) <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript spaces\">\u00a0\u00a0<\/code><code class=\"htmlscript plain\">throws Exception <\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">String userid = null, password = null, restServerURL = null;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">fileName = \"C:\/uploadedFile\/\"+fileName;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">String fileType = audio + \"; rate=\" + rate + \"; channels=\" + channel;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">userid = credentials.getString(\"username\");\/\/credentials \u7684\u5b9a\u4e49\u5728\u540e\u9762\u4ecb\u7ecd<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">password =\u00a0 credentials.getString(\"password\");<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">restServerURL = credentials.getString(\"url\"); <\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">CredentialsProvider provider = new BasicCredentialsProvider();<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(userid, password);<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">provider.setCredentials(AuthScope.ANY, credentials);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">SSLContextBuilder builder = new SSLContextBuilder();<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">builder.build(),SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">CloseableHTTPClient client = HTTPClients.custom().<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">setSSLSocketFactory(sslsf).<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">setDefaultCredentialsProvider(provider).<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">build();<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">HTTPPost HTTPPost = new HTTPPost(restServerURL+\"\/v1\/recognize?continuous=true\");<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">File file = new File(fileName);<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">FileEntity ent = new FileEntity(file,fileType);<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">ent.setContentType(fileType);<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">HTTPPost.setEntity(ent);<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">HTTPResponse response = client.execute(HTTPPost);\/\/\u63d0\u4ea4\u8bf7\u6c42\u5230 Waston \u670d\u52a1\u5668<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">HTTPEntity entity = response.getEntity();\/\/\u83b7\u53d6 Waston \u670d\u52a1\u5668\u8fd4\u56de\u7ed3\u679c<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">String responseString = EntityUtils.toString(entity, \"UTF-8\");\/\/\u63d0\u53d6\u8bc6\u522b\u51fa\u6765\u7684\u6587\u5b57<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript plain\">return responseString;\/\/\u8fd4\u56de\u8bc6\u522b\u7ed3\u679c<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h2 id=\"5IBMWatson\u7ec3\u4e60\u5de5\u7a0b\u5b9e\u8df5outline\" class=\"ibm-h2\">IBM Watson \u7ec3\u4e60\u5de5\u7a0b\u5b9e\u8df5<\/h2>\n<p>\u4e3a\u4f7f\u60a8\u80fd\u591f\u66f4\u65b9\u4fbf\u76f4\u89c2\u5730\u4f7f\u7528 Watson \u670d\u52a1\uff0c\u672c\u5c0f\u8282\u4f1a\u901a\u8fc7\u4e00\u4e2a\u5177\u4f53\u7684 Web \u5e94\u7528\u5f00\u53d1\u6765\u5c55\u793a\u5982\u4f55\u4f7f\u7528 Watson \u670d\u52a1\u5b9e\u73b0\u76f8\u5e94\u7684\u529f\u80fd\u9700\u6c42\u3002<\/p>\n<p>Web \u5e94\u7528\u6240\u8981\u5b9e\u73b0\u7684\u529f\u80fd\uff0c\u662f\u4f7f\u7528 Watson \u7684 Question and Answer \u670d\u52a1\uff0c\u5bf9\u7528\u6237\u8f93\u5165\u7684\u95ee\u9898\u8fdb\u884c\u56de\u7b54\uff0c\u7136\u540e\u4f7f\u7528 Watson \u7684 Machine Translation \u670d\u52a1\uff0c\u5c06\u8fd4\u56de\u7684\u7b54\u6848\u7531\u82f1\u6587\u7ffb\u8bd1\u6210\u4e2d\u6587\u3002<\/p>\n<h3 id=\"5.1.Web \u5de5\u7a0b\u6784\u5efa |outline\" class=\"ibm-h3\">Web \u5de5\u7a0b\u6784\u5efa<\/h3>\n<p>\u7531\u4e8e\u6211\u4eec\u8981\u5b9e\u73b0\u7684\u529f\u80fd\u8f83\u7b80\u5355\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 JSP + Servlet \u6765\u5b9e\u73b0 Web \u524d\u7aef\u548c\u540e\u7aef\u670d\u52a1\u3002\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 Eclipse \u6784\u5efa\u4e00\u4e2a Dynamic Web Project\uff0c\u5982\u56fe 5\uff1a<\/p>\n<h5 id=\"5.1.1.\u56fe 5.eclipse \u4e2d\u6784\u5efa Dynamic Web Project|outline\" class=\"ibm-h5\">\u56fe 5.eclipse \u4e2d\u6784\u5efa Dynamic Web Project<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10646.png\" alt=\"eclipse \u4e2d\u6784\u5efa Dynamic Web Project\" width=\"497\" height=\"710\" \/><\/p>\n<h3 id=\"5.2.\u9875\u9762\u529f\u80fd\u8bbe\u8ba1 |outline\" class=\"ibm-h3\">\u9875\u9762\u529f\u80fd\u8bbe\u8ba1<\/h3>\n<p>\u7531\u4e8e\u672c\u7ec3\u4e60\u5de5\u7a0b\u4e3b\u8981\u4fa7\u91cd\u540e\u7aef Watson \u670d\u52a1\u7684\u4f7f\u7528\uff0c\u6240\u4ee5\u5728\u524d\u7aef\u65b9\u9762\u8bbe\u8ba1\u8f83\u4e3a\u7b80\u5355\u5373\u53ef\u3002\u53ea\u9700\u8981\u6784\u5efa\u4e24\u4e2a\u9875\u9762\uff0c\u4e00\u4e2a\u7528\u4e8e\u8f93\u5165\u7528\u6237\u4fe1\u606f\uff08\u5373\u5177\u4f53\u95ee\u9898\uff09\uff0c\u4e00\u4e2a\u7528\u4e8e\u663e\u793a Watson \u7684\u8fd4\u56de\u4fe1\u606f\uff08\u5373\u95ee\u9898\u7684\u7b54\u6848\uff09\u3002\u8fd9\u4e24\u4e2a\u9875\u9762\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<h5 id=\"5.2.1.\u56fe 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u4fe1\u606f\u8f93\u5165\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u4fe1\u606f\u8f93\u5165\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10785.png\" alt=\"Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u4fe1\u606f\u8f93\u5165\u9875\u9762\" width=\"549\" height=\"274\" \/><\/p>\n<h5 id=\"5.2.2.\u56fe 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u8fd4\u56de\u4fe1\u606f\u663e\u793a\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u8fd4\u56de\u4fe1\u606f\u663e\u793a\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10812.png\" alt=\"Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u8fd4\u56de\u4fe1\u606f\u663e\u793a\u9875\u9762\" width=\"501\" height=\"247\" \/><\/p>\n<p>\u9875\u9762 1 \u7684\u6587\u672c\u8f93\u5165\u57df\u53ef\u653e\u5728\u4e00\u4e2a Form \u4e2d\uff0c\u901a\u8fc7 ask Watson \u6309\u94ae\u63d0\u4ea4\u5230\u540e\u7aef\u7684\u4e00\u4e2a servlet \u8fdb\u884c\u5904\u7406\u3002\u9875\u9762 2 \u7684\u8fd4\u56de\u4fe1\u606f\u53ef\u901a\u8fc7\u5728 servlet \u4e2d\u4f7f\u7528 request.setAttribute()\u65b9\u6cd5\u5c06 Watson \u8fd4\u56de\u7684\u4fe1\u606f\u653e\u5165\u5176\u4e2d\uff0c\u7136\u540e\u5728\u9875\u9762 2 \u4e2d\u8c03\u7528 request.getAttribute()\u5c06\u5176\u53d6\u51fa\u5e76\u5728\u9875\u9762\u663e\u793a\u3002\u7531\u4e8e\u9875\u9762\u903b\u8f91\u8f83\u4e3a\u7b80\u5355\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e0d\u518d\u7ed9\u51fa\u6709\u5173\u9875\u9762\u65b9\u9762\u7684\u4ee3\u7801\u3002<\/p>\n<h3 id=\"5.3.\u540e\u7aef\u4e1a\u52a1\u5904\u7406 |outline\" class=\"ibm-h3\">\u540e\u7aef\u4e1a\u52a1\u5904\u7406<\/h3>\n<p>\u5728\u540e\u7aef\uff0c\u6211\u4eec\u9700\u8981\u6709\u4e00\u4e2a servlet \u6765\u5904\u7406\u901a\u8fc7\u524d\u7aef\u9875\u9762\u63d0\u4ea4\u8fc7\u6765\u7684\u8bf7\u6c42\uff0c\u8fd8\u9700\u8981\u6709\u4e00\u4e2a\u670d\u52a1\u7c7b\u6765\u4e13\u95e8\u5904\u7406\u540c Watson \u670d\u52a1\u4e4b\u95f4\u7684\u4ea4\u4e92\uff0c\u56e0\u6b64\uff0c\u540e\u7aef\u7684\u7c7b\u56fe\u5982\u4e0b\uff1a<\/p>\n<h5 id=\"5.3.1.\u56fe 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef\u7c7b\u56fe |outline\" class=\"ibm-h5\">\u56fe 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef\u7c7b\u56fe<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index11108.png\" alt=\"Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef\u7c7b\u56fe\" width=\"434\" height=\"177\" \/><\/p>\n<p>QAServlet \u6bd4\u8f83\u7b80\u5355\uff0c\u5b83\u6240\u8c03\u7528\u7684\u5927\u90e8\u5206\u65b9\u6cd5\u90fd\u5728 WatsonService \u7c7b\u4e2d\u3002WatsonService \u8d1f\u8d23\u83b7\u53d6\u4e0e Watson \u670d\u52a1\u76f8\u5173\u7684\u5404\u79cd\u8ba4\u8bc1\u4fe1\u606f\uff0c\u4ee5\u53ca\u4e0e\u8fdc\u7a0b Watson \u670d\u52a1\u4e4b\u95f4\u7684\u4ea4\u4e92\u3002\u5173\u4e8e\u8ba4\u8bc1\u4fe1\u606f\u7684\u83b7\u53d6\uff0c\u8fd9\u91cc\u4f1a\u5728 WatsonService \u7c7b\u88ab\u521b\u5efa\u65f6\u6765\u521d\u59cb\u5316 username \u548c password \u7b49\uff0c\u5177\u4f53\u65b9\u6cd5\u8bf7\u53c2\u7167\u524d\u9762\u7684\u6e05\u5355 6\u3002<\/p>\n<p>\u4e0e Watson \u670d\u52a1\u4e4b\u95f4\u7684\u4ea4\u4e92\u65b9\u9762\uff0c\u6309\u7167\u8bbe\u60f3\u6211\u4eec\u4f1a\u4f7f\u7528\u4e24\u4e2a\u670d\u52a1\uff0c\u6240\u4ee5\u6bcf\u4e2a\u670d\u52a1\u5404\u5bf9\u5e94\u4e00\u4e2a\u65b9\u6cd5\u3002askWatson \u65b9\u6cd5\u7684\u5177\u4f53\u4ee3\u7801\u5982\u6e05\u5355 6 \u6240\u793a\uff1a<\/p>\n<h5 id=\"5.3.2.\u6e05\u5355 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef askWatson \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef askWatson \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_737637\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public static String askWatson(String question) throws Exception { <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">CredentialsProvider provider = new BasicCredentialsProvider();<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password);<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">provider.setCredentials(AuthScope.ANY, credentials);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">SSLContextBuilder builder = new SSLContextBuilder();<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">builder.build(),SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">CloseableHTTPClient client = HTTPClients.custom().<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">setSSLSocketFactory(sslsf).<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">setDefaultCredentialsProvider(provider).<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">build();<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">HTTPPost HTTPPost = new HTTPPost(requestURI);<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">StringEntity ent = new StringEntity(\"{\\\"question\\\" : {\\\"questionText\\\" : \\\"\" + question + \"\\\"}}\");<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">ent.setContentType(\"application\/json\");<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">HTTPPost.setEntity(ent);<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">HTTPPost.setHeader(\"X-SyncTimeOut\", \"60\");<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">HTTPResponse response = client.execute(HTTPPost);<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">HTTPEntity entity = response.getEntity();<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">String responseString = EntityUtils.toString(entity, \"UTF-8\");<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">return responseString;<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>askWatson \u65b9\u6cd5\u63a5\u53d7\u4e00\u4e2a\u5b57\u7b26\u4e32\u7c7b\u578b\u7684\u53c2\u6570\u4f5c\u4e3a\u65b9\u6cd5\u7684\u8f93\u5165\uff0c\u7136\u540e\u4f7f\u7528 Apache \u7684 HTTPclient \u5305\u4e2d\u7684\u76f8\u5173\u7c7b\u6784\u5efa\u4e86\u4e00\u4e2a client \u5bf9\u8c61\uff0c\u5305\u542b\u76f8\u5173 credential \u4fe1\u606f\u3002\u63a5\u4e0b\u6765\u6784\u9020\u4e00\u4e2a HTTPPost \u5bf9\u8c61\uff0c\u5b83\u7684 Entity \u9700\u8981\u4f7f\u7528 StringEntity\uff0cString \u7684\u683c\u5f0f\u9700\u8981\u53c2\u8003 Watson \u670d\u52a1\u7684 API\uff08\u5173\u4e8e Watson \u670d\u52a1\u7684 API, \u5b83\u7684\u6587\u6863\u94fe\u63a5\u90fd\u4f1a\u653e\u5728\u8be5\u670d\u52a1\u5728 Bluemix \u4e2d\u7684\u56fe\u6807\u4e0b\u9762\uff09\u3002\u7136\u540e\u4f7f\u7528 client \u5bf9\u8c61\u6765\u6267\u884c HTTPPost \u8bf7\u6c42\uff0c\u5e76\u5c06\u8fd4\u56de\u7ed3\u679c\u4fdd\u5b58\u5230 HTTPResponse \u5bf9\u8c61\u4e2d\uff0c\u518d\u8fdb\u884c\u8fdb\u4e00\u6b65\u5904\u7406\uff0c\u5c31\u53ef\u5f97\u5230\u8fd4\u56de\u7684\u7b54\u6848\u5b57\u7b26\u4e32\u3002<\/p>\n<p>WatsonService \u7c7b\u4e2d\u7684\u53e6\u4e00\u65b9\u6cd5 translateText \u4f1a\u5bf9\u8fd4\u56de\u7684\u7b54\u6848\u5b57\u7b26\u4e32\u8fdb\u884c\u7ffb\u8bd1\u3002\u7531\u4e8e Question and Answer \u670d\u52a1\u8fd4\u56de\u7684\u90fd\u662f\u82f1\u6587\u7ed3\u679c\uff0c\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 Watson \u7684\u7ffb\u8bd1\u670d\u52a1\u5c06\u5176\u7531\u82f1\u6587\u7ffb\u8bd1\u4e3a\u4e2d\u6587\u3002<\/p>\n<p>translateText \u65b9\u6cd5\u540c\u6837\u63a5\u53d7\u4e00\u4e2a\u5b57\u7b26\u4e32\u7c7b\u578b\u7684\u53c2\u6570\u4f5c\u4e3a\u65b9\u6cd5\u7684\u8f93\u5165\uff0c\u65b9\u6cd5\u7684\u8fd4\u56de\u503c\u5373\u662f\u5bf9\u8f93\u5165\u53c2\u6570\u7684\u7ffb\u8bd1\u7ed3\u679c\u3002\u5177\u4f53\u4ee3\u7801\u5982\u6e05\u5355 7 \u6240\u793a\uff1a<\/p>\n<h5 id=\"5.3.3.\u6e05\u5355 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef translateText \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef translateText \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_866841\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<div class=\"line number48 index47 alt1\">48<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public String translateText(String text){<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">\/\/\u6307\u5b9a\u5b57\u7b26\u4e32\u7684\u8bed\u8a00\u7c7b\u578b\u53ca\u6240\u9700\u7ffb\u8bd1\u7684\u76ee\u6807\u8bed\u8a00\u7c7b\u578b<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">String sid = \"mt-enus-zhcn\";<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">String result = \"\";<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">try {<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">String post = \"rt=text&amp;sid=\" + URLEncoder.encode(sid, \"UTF-8\") +<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">\"&amp;txt=\" + URLEncoder.encode(text, \"UTF-8\");<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">\/\/ \u51c6\u5907 HTTP \u8fde\u63a5<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">HTTPURLConnection conn = (HTTPURLConnection)new URL(endpoint).openConnection();<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">conn.setDoInput(true);<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">conn.setDoOutput(true);<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">conn.setUseCaches(false);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">conn.setRequestMethod(\"POST\");<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Accept\", \"*\/*\");<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Connection\", \"Keep-Alive\");<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Content-Type\", \"application\/x-www-form-urlencoded\");<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">String auth = username + \":\" + password;<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">String encoded = new String(Base64.encodeBase64(auth.getBytes()));<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Authorization\", String.format(\"Basic %s\", encoded));<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">DataOutputStream output = new DataOutputStream(conn.getOutputStream());<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript spaces\">\u00a0\u00a0<\/code><code class=\"htmlscript plain\">\/\/\u5efa\u7acb\u8fde\u63a5<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">conn.connect();<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">\/\/\u53d1\u9001 POST \u8bf7\u6c42<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">output.writeBytes(post);<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">output.flush();<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">output.close();<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">\/\/ \u8bfb\u53d6\u8fd4\u56de\u7ed3\u679c<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">BufferedReader rdr = new BufferedReader(new InputStreamReader(conn.getInputStream(), \"UTF-8\"));<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript plain\">if (conn.getResponseCode()==HTTPURLConnection.HTTP_OK)<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"htmlscript plain\">System.out.println(\"Response OK\u00a0 from: \"+conn.getURL().toString());<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"htmlscript plain\">System.err.println(\"Unsuccesful response: \"+conn.getResponseCode()+ \" from: \"+conn.getURL().toString());<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"htmlscript plain\">String line = \"\";<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"htmlscript plain\">StringBuffer buf = new StringBuffer();<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"htmlscript plain\">while ((line = rdr.readLine()) != null) {<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"htmlscript plain\">buf.append(line);<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"htmlscript plain\">buf.append(\"\\n\");<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"htmlscript plain\">rdr.close();<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"htmlscript plain\">return buf.toString();<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"htmlscript plain\">} catch (MalformedURLException e) {<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"htmlscript plain\">} catch (Exception e) {<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number46 index45 alt1\"><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"htmlscript plain\">return result;<\/code><\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>\u4e0d\u540c\u4e8e askWatson \u65b9\u6cd5\uff0c\u8fd9\u91cc\u5bf9 HTTP \u8fde\u63a5\u548c\u8bf7\u6c42\u7684\u6784\u5efa\uff0c\u4f7f\u7528\u7684\u662f JDK \u7684 API \u800c\u5e76\u975e Apache HTTPClient\uff0c\u5bf9\u8fd4\u56de\u7ed3\u679c\u7684\u5904\u7406\u4e5f\u540c\u6837\u4f7f\u7528 JDK \u7684 API\u3002\u5f53\u7136\uff0c\u4f7f\u7528 Apahce HTTPClient \u4e5f\u53ef\u5b9e\u73b0\u8fd9\u4e00\u529f\u80fd\u3002\u4ee3\u7801\u4e2d\u9700\u8981\u7279\u522b\u8bf4\u660e\u7684\u662f\u5bf9 sid \u53d8\u91cf\u7684\u6307\u5b9a\u3002sid \u53d8\u91cf\u58f0\u660e\u7684\u662f\u8f93\u5165\u5b57\u7b26\u4e32\u7684\u8bed\u8a00\u7c7b\u578b\u53ca\u6240\u8981\u7ffb\u8bd1\u7684\u76ee\u6807\u8bed\u8a00\u7c7b\u578b\u3002\u8be5\u53d8\u91cf\u5fc5\u987b\u88ab\u5305\u542b\u5728 HTTPPost \u8bf7\u6c42\u4e2d\uff0c\u5426\u5219 Watson \u7ffb\u8bd1\u670d\u52a1\u4f1a\u8ba4\u4e3a\u8bf7\u6c42\u975e\u6cd5\u3002\u76ee\u524d Bluemix \u4e2d\u7684 Watson \u7ffb\u8bd1\u670d\u52a1\u53ea\u5f00\u653e\u4e86\u6709\u9650\u7684\u51e0\u79cd\u8bed\u8a00\u4e4b\u95f4\u7684\u6587\u5b57\u7ffb\u8bd1\uff0c\u5176\u5b9e\u7528\u6027\u8fd8\u6709\u5f85\u63d0\u9ad8\u3002<\/p>\n<p>WatsonService \u7c7b\u4e2d\u8fd8\u6709\u4e00\u4e2a\u79c1\u6709\u65b9\u6cd5 parseResult\uff0c\u4f5c\u7528\u662f\u5bf9 Watson \u670d\u52a1\u6240\u8fd4\u56de\u7684\u5b57\u7b26\u4e32\u4fe1\u606f\u8fdb\u884c\u5904\u7406\u3002\u672c\u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7528\u5230\u7684\u8fd9\u4e24\u4e2a Watson \u670d\u52a1\u6240\u8fd4\u56de\u7684\u5b57\u7b26\u4e32\u683c\u5f0f\u662f\u4e0d\u540c\u7684\u3002Watson \u7ffb\u8bd1\u670d\u52a1\u6240\u8fd4\u56de\u7684\u5b57\u7b26\u4e32\u683c\u5f0f\u8f83\u4e3a\u7b80\u5355\uff0c\u4e0d\u9700\u8981\u505a\u7279\u6b8a\u5904\u7406\u5373\u53ef\u76f4\u63a5\u4f7f\u7528\u3002\u800c Question and Answer \u670d\u52a1\u8fd4\u56de\u7684\u662f JSON \u5b57\u7b26\u4e32\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528 parseResult \u65b9\u6cd5\u6765\u5904\u7406\u8fd9\u4e2a JSON \u5b57\u7b26\u4e32\uff0c\u5c06\u5176\u4e2d\u6709\u7528\u7684\u57df\u503c\u62bd\u53d6\u51fa\u6765\uff0c\u4f5c\u4e3a\u7ed3\u679c\u8fd4\u56de\u7ed9\u8c03\u7528\u5c42\u3002\u7531\u4e8e\u5bf9 JSON \u5b57\u7b26\u4e32\u5904\u7406\u7684\u4ee3\u7801\u8f83\u4e3a\u5e38\u89c1\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e0d\u518d\u7ed9\u51fa parseResult \u65b9\u6cd5\u7684\u5177\u4f53\u5185\u5bb9\u3002<\/p>\n<p>\u5bf9\u4e8e\u53e6\u4e00\u4e2a\u7c7b QAServlet \u800c\u8a00\uff0c\u5176 doGet \u6216 doPost \u65b9\u6cd5\u53ef\u76f4\u63a5\u8c03\u7528 WatsonService \u4e2d\u63d0\u4f9b\u7684\u5404\u79cd\u65b9\u6cd5\u6765\u5bf9\u4ece\u524d\u7aef\u5f97\u5230\u7684\u5b57\u7b26\u4e32\u8fdb\u884c\u5904\u7406\uff0c\u5176\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<h5 id=\"5.3.4.\u6e05\u5355 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef QAServlet \u7c7b\u7684\u4e3b\u8981\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef QAServlet \u7c7b\u7684\u4e3b\u8981\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_82510\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">protected void doPost(HTTPServletRequest req, HTTPServletResponse resp)<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">throws ServletException, IOException {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">\/\/\u8bfb\u53d6\u524d\u7aef\u9875\u9762\u8f93\u5165\u7684\u95ee\u9898<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">String question = req.getParameter(\"question\");<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">WatsonService watsonSvc = new WatsonService();<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">String answer =null;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">String translatedAnswer = null;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">try {<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">\/\/\u5bf9\u95ee\u9898\u8fdb\u884c\u56de\u7b54<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">answer = watsonSvc.askWatson(question);<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">\/\/\u5bf9\u7b54\u6848\u8fdb\u884c\u7ffb\u8bd1<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">translatedAnswer = watsonSvc.translateText(answer);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">req.setAttribute(\"answer\", translatedAnswer);<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">req.getRequestDispatcher(\"result.jsp\").forward(req,resp); <\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">} catch (Exception e) {<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>QAServlet \u4f1a\u5c06\u4ece\u524d\u7aef\u5f97\u5230\u7684\u95ee\u9898\u8fdb\u884c\u56de\u7b54\u5e76\u7ffb\u8bd1\uff0c\u7136\u540e\u653e\u5230 request \u5bf9\u8c61\u4e2d\uff0c\u5e76\u4f7f\u524d\u7aef\u9875\u9762\u8df3\u8f6c\u5230 result.jsp \u6765\u5bf9\u7ed3\u679c\u8fdb\u884c\u663e\u793a\u3002<\/p>\n<p>\u4ee5\u4e0a\u662f\u5bf9 Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u4e3b\u8981\u7684\u7c7b\u53ca\u65b9\u6cd5\u7684\u8be6\u7ec6\u8bf4\u660e\u3002\u901a\u8fc7\u8be5\u7ec3\u4e60\u5de5\u7a0b\uff0c\u5e0c\u671b\u60a8\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u80fd\u6ce8\u610f\u5230\uff0cBluemix \u4e2d\u7684 Watson \u670d\u52a1\u6709\u7740\u4e0d\u540c\u7684 API\uff0c\u5728\u8fdb\u884c\u8c03\u7528\u65f6\uff0c\u9700\u8981\u9996\u5148\u53c2\u8003\u5176 API \u6587\u6863\uff0c\u4f7f\u7528\u5408\u9002\u7684\u65b9\u5f0f\u8fdb\u884c\u8c03\u7528\u3002\u540c\u65f6\uff0c\u4e0d\u540c\u7684 Watson \u670d\u52a1\u6240\u8fd4\u56de\u7684\u7ed3\u679c\u683c\u5f0f\u4e5f\u4e0d\u5c3d\u76f8\u540c\uff0c\u6709\u53ef\u80fd\u9700\u8981\u505a\u8fdb\u4e00\u6b65\u5904\u7406\u624d\u80fd\u591f\u4f7f\u7528\u3002<\/p>\n<p>Watson \u7ec3\u4e60\u5de5\u7a0b\u53ef\u88ab\u5bfc\u51fa\u6210 WAR \u5305\uff0c\u90e8\u7f72\u5728 Bluemix \u5916\u90e8\u7684\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u76f4\u63a5\u8fd0\u884c\u3002Bluemix \u63d0\u4f9b\u4e86 Liberty server \u6765\u8fd0\u884c Java Web \u7a0b\u5e8f\uff0c\u56e0\u6b64\u6211\u4eec\u4e5f\u53ef\u4ee5\u5c06\u8be5 WAR \u5305\u90e8\u7f72\u5230 Bluemix \u5e73\u53f0\u4e2d\uff0c\u5177\u4f53\u7684\u90e8\u7f72\u65b9\u6cd5\u53ca\u6b65\u9aa4\u8bf7\u53c2\u8003<a href=\"https:\/\/www.ng.bluemix.net\/docs\/#cli\/index.html%23pushingwar\">Bluemix \u5b98\u65b9\u6587\u6863<\/a>\u3002\n<!-- WP QUADS Content Ad Plugin v. 2.0.19 -->\n<div class=\"quads-location quads-ad2\" id=\"quads-ad2\" style=\"float:none;margin:0px;\">\n\n <!-- WP QUADS - Quick AdSense Reloaded v.2.0.19 Content AdSense async --> \n\n\n<script type=\"text\/javascript\" >\nvar quads_screen_width = document.body.clientWidth;\nif ( quads_screen_width >= 1140 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width >= 1024  && quads_screen_width < 1140 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width >= 768  && quads_screen_width < 1024 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }if ( quads_screen_width < 768 ) {document.write('<ins class=\"adsbygoogle\" style=\"display:inline-block;width:336px;height:280px;\" data-ad-client=\"pub-8568501110011894\" data-ad-slot=\"4911828489\" ><\/ins>');\r\n            (adsbygoogle = window.adsbygoogle || []).push({});\r\n            }\n<\/script>\n\n <!-- end WP QUADS --> \n\n\n<\/div>\n<\/p>\n<h2 id=\"6\u7ed3\u8bedoutline\" class=\"ibm-h2\">\u7ed3\u8bed<\/h2>\n<p>Bluemix \u4e3a\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u4e86\u4e00\u4e2a\u53ef\u5feb\u901f\u5f00\u53d1\u3001\u90e8\u7f72\u548c\u7ba1\u7406\u5e94\u7528\u7684\u5e73\u53f0\uff0c\u5b83\u7684\u5f00\u653e\u6027\u4f7f\u5f97\u5f00\u53d1\u8005\u53ef\u4ee5\u63d0\u4f9b\u81ea\u5df1\u7684\u670d\u52a1\u5e76\u53d1\u5e03\u5230\u5e73\u53f0\u4e0a\uff0c\u4f9b\u5176\u4ed6\u5f00\u53d1\u4eba\u5458\u4f7f\u7528\u3002IBM Watson \u56e2\u961f\u76ee\u524d\u5728 Bluemix \u5e73\u53f0\u5f00\u53d1\u5e76\u63d0\u4f9b\u7684\u8fd9 9 \u79cd\u670d\u52a1\uff0c\u867d\u7136\u6210\u719f\u5ea6\u4e0d\u9ad8\uff0c\u4f46\u8fd9\u5df2\u5f70\u663e\u51fa\u4e00\u79cd\u8d8b\u52bf\uff0c\u5373 Bluemix \u6240\u63d0\u4f9b\u7684\u5e73\u53f0\uff0c\u662f\u4eca\u540e\u8ba4\u77e5\u8ba1\u7b97\u670d\u52a1\u53d1\u6325\u4f5c\u7528\u7684\u821e\u53f0\u4e4b\u4e00\u3002\u5f00\u53d1\u90fd\u901a\u8fc7 Bluemix \u4f7f\u7528\u8ba4\u77e5\u8ba1\u7b97\u670d\u52a1\uff0c\u53ef\u4ee5\u907f\u514d\u5404\u79cd\u73af\u5883\u7684\u91cd\u590d\u642d\u5efa\uff0c\u66f4\u4e13\u6ce8\u4e8e\u8ba4\u77e5\u8ba1\u7b97\u672c\u8eab\u7684\u7814\u7a76\u4e0e\u4f7f\u7528\u3002\u672c\u6587\u901a\u8fc7\u4e00\u4e2a\u5b9e\u9645\u7684\u7ec3\u4e60\u5de5\u7a0b\u7684\u5f00\u53d1\uff0c\u5e0c\u671b\u8d77\u5230\u629b\u7816\u5f15\u7389\u7684\u4f5c\u7528\uff0c\u4f7f\u66f4\u591a\u5f00\u53d1\u4eba\u5458\u5bf9 Bluemix \u548c Watson \u670d\u52a1\u4ea7\u751f\u5174\u8da3\uff0c\u5e76\u8fd0\u7528\u5b83\u4eec\u5f00\u53d1\u51fa\u66f4\u52a0\u5bcc\u6709\u521b\u65b0\u6027\u7684\u5e94\u7528\u3002","protected":false},"excerpt":{"rendered":"<p>Watson \u7684\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u8bc6\u522b\u51c6\u786e\u7387\u4f1a\u53d7\u5230\u8bed\u97f3\u8f93\u5165\u8d28\u91cf\u7684\u5f71\u54cd\uff0c\u4f46\u51ed\u501f Watson \u5f3a\u5927\u7684\u8ba4\u77e5\u8ba1\u7b97\u80fd\u529b\uff0c\u4ecd\u80fd\u5728\u67d0\u4e9b\u5355\u8bcd\u53d1\u97f3\u6a21\u7cca\u65f6\uff0c\u6839\u636e\u4e0a\u4e0b\u6587\u6765\u63a8\u65ad [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[49],"tags":[],"pwapp_after_post_content":"","pwapp_before_post_content":"","androapp_header":"","pwapp_author":{"ID":1,"name":"enadmin","slug":"enadmin"},"pwapp_terms":{"category":[{"term_id":49,"name":"AI","slug":"ai","term_group":0,"term_taxonomy_id":49,"taxonomy":"category","description":"","parent":0,"count":9,"filter":"raw","cat_ID":49,"category_count":9,"category_description":"","cat_name":"AI","category_nicename":"ai","category_parent":0,"ID":49}]},"pwapp_feed_image_dimension_type":"preview","pwapp_post_image":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index575.png","share_image":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index575.png","featured_image_showhide":"show","pwapp_excerpt":"<p>Watson \u7684\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u8bc6\u522b\u51c6\u786e\u7387\u4f1a\u53d7\u5230\u8bed\u97f3\u8f93\u5165\u8d28\u91cf\u7684\u5f71\u54cd\uff0c\u4f46\u51ed\u501f Watson \u5f3a\u5927\u7684\u8ba4\u77e5\u8ba1\u7b97\u80fd\u529b\uff0c\u4ecd\u80fd\u5728\u67d0\u4e9b\u5355\u8bcd\u53d1\u97f3\u6a21\u7cca\u65f6\uff0c\u6839\u636e\u4e0a\u4e0b\u6587\u6765\u63a8\u65ad [&hellip;]<\/p>\n","pwapp_title":"IBM Watson Speech to Text","androapp_image_list":[{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index575.png","height":200},{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index2840.png","height":200},{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index5885.png","height":200},{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index5904.png","height":200},{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10646.png","height":200},{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10785.png","height":200},{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10812.png","height":200},{"src":"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index11108.png","height":200}],"pwapp_post_content":"<style type=\"text\/css\">androapp img{\r\n    max-width: 100%;\r\n    height: auto;\r\n}\r\niframe{\r\n    max-width: 100%;    \r\n}\r\nfigure {\r\n    max-width: 100%;\r\n    height: auto;\r\n}\r\nimg{\r\n    max-width: 100% !important;\r\n    height: auto;\r\n}\r\ndiv {\r\n    max-width: 100% !important;\r\n}\r\nspan {\r\n    max-width:100%;\r\n    overflow: auto;\r\n}\r\naudio {\r\n    display:block;\r\n    visibility:visible !important;\r\n}\r\nvideo{\r\n    width:100%;\r\n    height:auto;\r\n}\r\n<\/style><div class='androapp'><p>Watson \u7684\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u8bc6\u522b\u51c6\u786e\u7387\u4f1a\u53d7\u5230\u8bed\u97f3\u8f93\u5165\u8d28\u91cf\u7684\u5f71\u54cd\uff0c\u4f46\u51ed\u501f Watson \u5f3a\u5927\u7684\u8ba4\u77e5\u8ba1\u7b97\u80fd\u529b\uff0c\u4ecd\u80fd\u5728\u67d0\u4e9b\u5355\u8bcd\u53d1\u97f3\u6a21\u7cca\u65f6\uff0c\u6839\u636e\u4e0a\u4e0b\u6587\u6765\u63a8\u65ad\u51fa\u8be5\u5355\u8bcd\u4ee5\u4fdd\u8bc1\u6574\u53e5\u8bdd\u7684\u6d41\u7545\u3002\u901a\u8fc7\u5bf9\u6bd4\uff0c\u7b14\u8005\u53d1\u73b0 Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u8bc6\u522b\u7387\u4e5f\u9ad8\u4e8e\u5176\u4ed6\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u3002\u76ee\u524d\u5173\u4e8e\u8be5\u670d\u52a1\u7684\u6587\u6863\u4ee5\u53ca\u5e94\u7528\u670d\u52a1\u63a5\u53e3\u4ecb\u7ecd\u5728 IBM Bluemix \u4e2d\u53ef\u4ee5\u627e\u5230\uff0c\u4f46\u662f\u8fd9\u4e9b\u6587\u6863\u6d89\u53ca\u5185\u5bb9\u7565\u663e\u7b80\u5355\uff0c\u5f00\u53d1\u4eba\u5458\u5728\u9605\u8bfb\u548c\u5b9e\u8df5\u65f6\u4ecd\u4f1a\u9047\u5230\u5f88\u591a\u95ee\u9898\u3002\u672c\u6587\u5c06\u9488\u5bf9\u8be5\u670d\u52a1\u505a\u8be6\u7ec6\u4ecb\u7ecd\uff0c\u89e3\u8bfb\u5176 API\uff0c\u5e76\u7ed9\u51fa\u4e00\u4e2a\u57fa\u4e8e Java \u7684\u6f14\u793a\u5b9e\u4f8b\uff0c\u5e0c\u671b\u501f\u6b64\u629b\u7816\u5f15\u7389\uff0c\u4f7f\u60a8\u80fd\u5bf9\u6b64\u670d\u52a1\u6709\u66f4\u6df1\u523b\u7684\u7406\u89e3\uff0c\u5408\u7406\u4f7f\u7528\u8be5\u670d\u52a1\u6765\u5f00\u53d1\u5f3a\u5927\u7684\u5e94\u7528\u3002<\/p>\n<h2 id=\"2IBMWatson\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4ecb\u7ecdoutline\" class=\"ibm-h2\">IBM Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4ecb\u7ecd<\/h2>\n<p>\u4f7f\u7528 IBM id \u767b\u5f55\u5230 Bluemix \u540e\uff0c\u5728 Catalog \u4e2d\u53ef\u4ee5\u627e\u5230\u6240\u6709\u53ef\u7528\u7684 IBM Watson \u670d\u52a1\uff0c\u5982\u56fe 1 \u6240\u793a\uff1a<\/p>\n<h5 id=\"2.0.1.\u56fe 1. Bluemix \u4e2d\u7684 IBM Waston \u670d\u52a1 |outline\" class=\"ibm-h5\">\u56fe 1. Bluemix \u4e2d\u7684 IBM Waston \u670d\u52a1<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index575.png\" alt=\"Bluemix \u4e2d\u7684 IBM Waston \u670d\u52a1\" width=\"553\" height=\"269\" \/><\/p>\n<p>Speech to Text \u670d\u52a1\u4e8e 2015 \u5e74 3 \u6708\u4efd\u5728 Bluemix Watson \u670d\u52a1\u76ee\u5f55\u4e0b\u5f00\u653e\uff0c\u867d\u7136\u5176\u4ecd\u5c5e\u4e8e\u6d4b\u8bd5\u7248\u672c\uff0c\u4f46\u5176\u57fa\u672c\u529f\u80fd\u5df2\u80fd\u6b63\u5e38\u8fd0\u884c\uff0c\u8bc6\u522b\u7387\u4e5f\u5df2\u9ad8\u51fa\u4e1a\u754c\u5927\u591a\u6570\u82f1\u6587\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u3002\u4ece\u8be5\u670d\u52a1\u7684\u5b98\u65b9\u4ecb\u7ecd\u4e2d\uff0c\u53ef\u4ee5\u4e86\u89e3\u5230\u76ee\u524d\u6240\u652f\u6301\u7684\u8bed\u97f3\u8f93\u5165\u5305\u542b\u4ee5\u4e0b\u4e24\u5927\u7c7b\uff1a<\/p>\n<h3 id=\"2.1.\u901a\u8fc7\u9ea6\u514b\u98ce\u5b9e\u65f6\u5f55\u5236\u7684\u97f3\u9891\u6d41 |outline\" class=\"ibm-h3\">\u901a\u8fc7\u9ea6\u514b\u98ce\u5b9e\u65f6\u5f55\u5236\u7684\u97f3\u9891\u6d41<\/h3>\n<p>\u76ee\u524d\u4e1a\u754c\u7c7b\u4f3c\u7684\u529f\u80fd\u51fa\u73b0\u5728\u67d0\u4e9b\u8bed\u97f3\u8f93\u5165\u6cd5\u91cc\uff0c\u8bf4\u51fa\u7684\u5355\u8bcd\u88ab\u8f6c\u5316\u6210\u6587\u5b57\u4ee5\u8fbe\u5230\u6587\u5b57\u8f93\u5165\u7684\u76ee\u7684\u3002\u4e8b\u5b9e\u4e0a\uff0cWatson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u5bf9\u5b9e\u65f6\u97f3\u9891\u6d41\u7684\u89e3\u6790\u8bc6\u522b\uff0c\u4e0e\u4e0a\u8ff0\u7684\u8bed\u97f3\u8f93\u5165\u6cd5\u5b8c\u5168\u4e0d\u540c\u3002Watson \u5728\u8fdb\u884c\u8bed\u97f3\u8bc6\u522b\u65f6\uff0c\u5e76\u4e0d\u4ec5\u4ec5\u5bf9\u97f3\u9891\u6d41\u4e2d\u7684\u5355\u8bcd\u9010\u4e00\u8bc6\u522b\uff0c\u800c\u662f\u4f1a\u7ed3\u5408\u5355\u8bcd\u6240\u5904\u7684\u4e0a\u4e0b\u6587\uff0c\u66f4\u51c6\u786e\u5730\u89e3\u6790\u5355\u8bcd\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u89c2\u5bdf\u5230\uff0cWatson \u5728\u8fdb\u884c\u8bed\u97f3\u5b9e\u65f6\u8bc6\u522b\u65f6\uff0c\u4e4b\u524d\u8bc6\u522b\u7684\u524d\u534a\u53e5\u7684\u5185\u5bb9\uff0c\u6709\u53ef\u80fd\u4f1a\u5728\u540e\u534a\u53e5\u88ab\u8bc6\u522b\u65f6\u53d1\u751f\u6539\u53d8\u3002<\/p>\n<h3 id=\"2.2.\u4e8b\u5148\u5f55\u5236\u597d\u7684\u97f3\u9891\u6587\u4ef6 |outline\" class=\"ibm-h3\">\u4e8b\u5148\u5f55\u5236\u597d\u7684\u97f3\u9891\u6587\u4ef6<\/h3>\n<p>\u76ee\u524d Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u652f\u6301\u7684\u97f3\u9891\u7f16\u7801\u6709\u4e24\u79cd\uff1awav \u548c flac\u3002\u9664\u7f16\u7801\u5916\uff0c\u97f3\u9891\u6587\u4ef6\u7684\u58f0\u9053\u6570\u3001\u7801\u7387\u53ca\u9891\u7387\u7b49\u90fd\u9700\u8981\u540c\u97f3\u9891\u6587\u4ef6\u4e00\u8d77\u4f20\u9012\u7ed9 Watson\u3002\u8fd9\u4e9b\u53c2\u6570\u5982\u679c\u51fa\u73b0\u4e0d\u4e00\u81f4\uff0c\u5c06\u4f1a\u5bf9\u6700\u540e\u7684\u8bc6\u522b\u7ed3\u679c\u4ea7\u751f\u5f88\u5927\u5f71\u54cd\u3002\u4f8b\u5982\uff0cWatson \u5728 Bluemix \u4e0a\u516c\u5f00\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u6f14\u793a\uff08<a href=\"https:\/\/speech-to-text-demo.mybluemix.net\/\">https:\/\/speech-to-text-demo.myBluemix.net\/<\/a>\uff09\uff0c\u7b14\u8005\u5c06\u5176\u97f3\u9891\u6587\u4ef6\u66ff\u6362\u6210\u81ea\u5df1\u51c6\u5907\u7684\u6587\u4ef6\u8fdb\u884c\u8bc6\u522b\uff0c\u4f46\u6ca1\u6709\u4fee\u6539\u7a0b\u5e8f\u91cc\u7684\u53c2\u6570\u4f7f\u5176\u4e0e\u81ea\u5df1\u7684\u6587\u4ef6\u4e00\u81f4\uff0c\u4ece\u800c\u5f71\u54cd\u4e86\u8bc6\u522b\u7ed3\u679c\uff0c\u4e0e\u5b9e\u9645\u5185\u5bb9\u5dee\u522b\u5de8\u5927\u3002<\/p>\n<h2 id=\"3Watson\u8bed\u97f3\u8bc6\u522b\u670d\u52a1API\u8be6\u89e3outline\" class=\"ibm-h2\">Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1 API \u8be6\u89e3<\/h2>\n<p>Watson \u670d\u52a1\u7684 API \u5747\u662f\u4ee5 RESTful \u7684\u65b9\u5f0f\u7ed9\u51fa\uff0c\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4e5f\u4e0d\u4f8b\u5916\u3002API \u7684\u5b98\u65b9\u4ecb\u7ecd\uff08<a href=\"http:\/\/www.ibm.com\/smarterplanet\/us\/en\/ibmwatson\/developercloud\/apis\/#!\/speech-to-text\">http:\/\/www.ibm.com\/smarterplanet\/us\/en\/ibmwatson\/developercloud\/apis\/#!\/speech-to-text<\/a>\uff09\u5217\u51fa\u4e86 10 \u4e2a\u65b9\u6cd5\uff0c\u65b9\u6cd5 v1\/recognize \u662f\u6240\u6709\u65b9\u6cd5\u7684\u6838\u5fc3\uff0c\u4e3b\u8981\u8d1f\u8d23\u8bed\u97f3\u6587\u4ef6\u7684\u8bc6\u522b\u3002\u5176\u4ed6\u65b9\u6cd5\u6709\u8d1f\u8d23\u83b7\u53d6 session \u7684\uff0c\u6709\u8d1f\u8d23\u83b7\u53d6\u8bc6\u522b\u8bed\u8a00\u7684\u6a21\u5757\u7684\uff08\u76ee\u524d\u53ea\u652f\u6301\u82f1\u6587\u7684\u8bc6\u522b\uff09\uff0c\u4e5f\u6709\u8d1f\u8d23\u591a\u6587\u4ef6\u540c\u65f6\u8bc6\u522b\u7684\u3002\u4e0b\u9762\u5c06\u5bf9 v1\/recognize \u65b9\u6cd5\u8fdb\u884c\u8be6\u7ec6\u5256\u6790\u3002<\/p>\n<p>\u8be5\u65b9\u6cd5\u4e3a HTTP POST \u65b9\u6cd5\uff0c\u652f\u6301\u4ee5\u4e0b\u51e0\u79cd\u53c2\u6570\uff1a<\/p>\n<h3 id=\"3.1.Content-Type|outline\" class=\"ibm-h3\">Content-Type<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e HTTP HEADER \u4e2d\uff0c\u7528\u4e8e\u63cf\u8ff0\u5f53\u524d\u6587\u4ef6\u7684\u683c\u5f0f\u3002\u5982\u201caudio\/flac; rate=48000; channels=2\u201d\uff0c\u4ee3\u8868\u7684\u662f\u8be5\u6587\u4ef6\u662f flac \u7f16\u7801\u3001\u9891\u7387\u662f 48khz\u3001\u53cc\u58f0\u9053\u3002\u97f3\u9891\u6587\u4ef6\u7684\u8be6\u7ec6\u53c2\u6570\u4fe1\u606f\u53ef\u4ee5\u901a\u8fc7\u4e13\u4e1a\u97f3\u9891\u8f6f\u4ef6\u6216\u8005\u67d0\u4e9b\u97f3\u9891\u7ba1\u7406\u6216\u64ad\u653e\u8f6f\u4ef6\uff08\u5982 itunes\uff09\u8fdb\u884c\u67e5\u770b\u3002\u5982\u524d\u6587\u6240\u8ff0\uff0c\u8be5\u53c2\u6570\u7684\u53d6\u503c\u5fc5\u987b\u4e0e\u97f3\u9891\u6587\u4ef6\u4e25\u683c\u4e00\u81f4\uff0c\u5426\u5219\u5c06\u4f1a\u5f71\u54cd\u6700\u7ec8\u7684\u8bc6\u522b\u7ed3\u679c\u3002<\/p>\n<h3 id=\"3.2.Transfer-encoding|outline\" class=\"ibm-h3\">Transfer-encoding<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e HTTP HEADER \u4e2d\uff0c\u9ed8\u8ba4\u503c\u4e3a\u7a7a\uff0c\u53ef\u9009\u503c\u4e3a chunked\u3002\u5f53\u5176\u88ab\u8bbe\u7f6e\u4e3a chunked \u65f6\uff0c\u97f3\u9891\u6587\u4ef6\u5728\u4e0a\u4f20\u65f6\u4f1a\u4f7f\u7528\u6d41\u6a21\u5f0f\u3002\u800c Watson \u89c4\u5b9a\u97f3\u9891\u6587\u4ef6\u7684\u957f\u5ea6\u8d85\u8fc7 5 \u5206\u949f\u65f6\uff0c\u9700\u8981\u4f7f\u7528\u6d41\u6a21\u5f0f\u4e0a\u4f20\u3002<\/p>\n<h3 id=\"3.3.Continuous|outline\" class=\"ibm-h3\">Continuous<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e POST \u8bf7\u6c42\u7684 query \u53c2\u6570\u4e2d\uff0c\u53ef\u9009\u503c\u4e3a true \u548c false\uff0c\u9ed8\u8ba4\u4e3a false\u3002\u5f53\u8be5\u53c2\u6570\u88ab\u8bbe\u7f6e\u4e3a true \u65f6\uff0cWatson \u53ef\u81ea\u52a8\u8bc6\u522b\u97f3\u9891\u6587\u4ef6\u4e2d\u7684\u505c\u987f\uff0c\u5e76\u8fd4\u56de\u4ee5\u505c\u987f\u4e3a\u5206\u5272\u7684\u591a\u4e2a\u8bc6\u522b\u7ed3\u679c\u3002\u5f53\u5176\u88ab\u8bbe\u7f6e\u4e3a false \u65f6\uff0cWatson \u4ec5\u4f1a\u8fd4\u56de\u7b2c\u4e00\u5904\u505c\u987f\u4e4b\u524d\u7684\u97f3\u9891\u8bc6\u522b\u7ed3\u679c\u3002\u56e0\u6b64\uff0c\u5f53\u4e0a\u4f20\u7684\u97f3\u9891\u6587\u4ef6\u5305\u542b\u591a\u53e5\u8bdd\u65f6\uff0c\u5efa\u8bae\u5c06\u8be5\u53c2\u6570\u8bbe\u7f6e\u4e3a true\u3002<\/p>\n<h3 id=\"3.4.X-logging|outline\" class=\"ibm-h3\">X-logging<\/h3>\n<p>\u8be5\u53c2\u6570\u4f4d\u4e8e POST \u8bf7\u6c42\u7684 HEADER \u91cc\uff0c\u53ef\u9009\u503c\u4e3a 0 \u548c 1\uff0c\u9ed8\u8ba4\u4e3a 1\u3002\u5f53\u8be5\u53c2\u6570\u88ab\u8bbe\u7f6e\u4e3a 0 \u65f6\uff0c\u670d\u52a1\u5668\u5728\u8bc6\u522b\u5b8c\u97f3\u9891\u6587\u4ef6\u540e\uff0c\u4f1a\u7acb\u5373\u5c06\u8be5\u6587\u4ef6\u548c\u8bc6\u522b\u7ed3\u679c\u6e05\u7406\u6389\u3002<\/p>\n<h2 id=\"4Java\u5b9e\u4f8b\u5256\u6790\u4e0e\u5e94\u7528outline\" class=\"ibm-h2\">Java \u5b9e\u4f8b\u5256\u6790\u4e0e\u5e94\u7528<\/h2>\n<p>\u4e0a\u6587\u5206\u6790\u4e86 Watson \u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u4e3b\u8981\u7684 API \u53ca\u53c2\u6570\uff0c\u5728\u6b64\u57fa\u7840\u4e0a\uff0c\u672c\u8282\u4f7f\u7528 Java \u8bed\u8a00\u5177\u4f53\u5c55\u793a\u5982\u4f55\u4f7f\u7528\u8fd9\u4e9b API \u6765\u8fdb\u884c\u8bed\u97f3\u8bc6\u522b\u3002\u7531\u4e8e Bluemix \u4e2d\u5173\u4e8e\u8be5\u90e8\u5206\u7684\u5b9e\u4f8b\u4ee5 Node.js \u4e3a\u4e3b\uff0c\u6ca1\u6709\u5305\u542b Java \u90e8\u5206\uff0c\u6240\u4ee5\u672c\u8282\u4f1a\u6d89\u53ca\u8bf8\u591a\u7ec6\u8282\uff0c\u4ee5\u65b9\u4fbf\u60a8\u8fdb\u884c\u5b9e\u9a8c\u3002<\/p>\n<h3 id=\"4.1.Java \u5b9e\u4f8b\u529f\u80fd\u4ecb\u7ecd |outline\" class=\"ibm-h3\">Java \u5b9e\u4f8b\u529f\u80fd\u4ecb\u7ecd<\/h3>\n<p>\u672c\u5b9e\u4f8b\u529f\u80fd\u662f\u901a\u8fc7 IBM Waston \u8bed\u97f3\u670d\u52a1\uff0c\u8bc6\u522b\u4e0a\u4f20\u5230\u670d\u52a1\u5668\u4e0a\u7684\u97f3\u9891\u6587\u4ef6\u3002\u7528\u6237\u53ef\u4ee5\u5728\u6587\u4ef6\u4e0a\u4f20\u754c\u9762\u9009\u62e9\u97f3\u9891\u6587\u4ef6\u8fdb\u884c\u4e0a\u4f20\uff0c\u5e76\u5c06\u8be5\u6587\u4ef6\u4fdd\u5b58\u5230\u670d\u52a1\u5668\u7aef\u3002\u4e4b\u540e\uff0c\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u97f3\u9891\u8bc6\u522b\u9875\u9762\u5bf9\u4e0a\u4f20\u7684\u97f3\u9891\u6587\u4ef6\u8fdb\u884c\u667a\u80fd\u8bc6\u522b\uff0c\u8bc6\u522b\u7684\u7ed3\u679c\u4f1a\u663e\u793a\u5728\u97f3\u9891\u8bc6\u522b\u9875\u9762\u4e0a\u3002\u901a\u8fc7\u672c\u5b9e\u4f8b\u53ef\u4ee5\u5c06\u97f3\u9891\u6587\u4ef6\u8f6c\u5316\u4e3a\u6587\u5b57\uff0c\u975e\u5e38\u7b80\u5355\u5b9e\u7528\u3002<\/p>\n<p>\u672c\u5b9e\u4f8b\u91c7\u7528 Java Web \u67b6\u6784\uff0c\u524d\u7aef\u9875\u9762\u901a\u8fc7 HTML \u548c jQuery \u5b9e\u73b0\uff0c\u670d\u52a1\u5668\u7aef\u529f\u80fd\u901a\u8fc7 Java \u5b9e\u73b0\uff0c\u524d\u7aef\u548c\u670d\u52a1\u5668\u7aef\u901a\u8fc7 Post \u7684\u65b9\u5f0f\u8fdb\u884c\u4ea4\u4e92\u3002\u672c\u5b9e\u4f8b\u53ef\u4ee5\u90e8\u7f72\u5728 Tomcat \u670d\u52a1\u5668\u4e0a\u8fd0\u884c\u3002<\/p>\n<h3 id=\"4.2.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u754c\u9762 |outline\" class=\"ibm-h3\">\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u754c\u9762<\/h3>\n<p>\u8be5\u754c\u9762\u7684\u529f\u80fd\u662f\u7528\u6765\u9009\u62e9\u4e0a\u4f20\u6587\u4ef6\uff0c\u5e76\u4fdd\u5b58\u8be5\u6587\u4ef6\u5230\u670d\u52a1\u5668\u7aef\u3002\u670d\u52a1\u5668\u7aef\u7684\u5b9e\u73b0\u4f1a\u5728\u540e\u9762\u7684\u6587\u7ae0\u4e2d\u8fdb\u884c\u4ecb\u7ecd\u3002\u9996\u5148\u5c55\u793a\u4e00\u4e0b\u754c\u9762\uff0c\u80fd\u591f\u8ba9\u8bfb\u8005\u6709\u4e2a\u76f4\u89c2\u7684\u8ba4\u8bc6\u3002\u5982\u56fe 2 \u6240\u793a\uff0c\u9875\u9762\u4e0a\u6709\u4e00\u4e2a choose file \u6309\u94ae\u548c\u4e00\u4e2a upload \u6309\u94ae\u3002\u901a\u8fc7 choose file \u6309\u94ae\u53ef\u4ee5\u6d4f\u89c8\u5e76\u9009\u62e9\u7535\u8111\u4e0a\u5b58\u653e\u7684\u97f3\u9891\u6587\u4ef6\uff0c\u6240\u9009\u62e9\u7684\u6587\u4ef6\u540d\u4f1a\u5728\u6309\u94ae\u53f3\u8fb9\u663e\u793a\u3002\u4e4b\u540e\u70b9\u51fb upload \u6309\u94ae\u53ef\u4ee5\u5c06\u8be5\u6587\u4ef6\u4e0a\u4f20\u5230\u670d\u52a1\u5668\u4e0a\u3002<\/p>\n<h5 id=\"4.2.1.\u56fe 2.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 2.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index2840.png\" alt=\"\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762\" width=\"420\" height=\"286\" \/><\/p>\n<p>\u97f3\u9891\u4e0a\u4f20\u9875\u9762\u901a\u8fc7 HTML \u5b9e\u73b0\uff0c\u9875\u9762\u4e3b\u4f53\u662f\u4e00\u4e2a form \u8868\u683c\uff0c\u70b9\u51fb upload \u6309\u94ae\u4f1a\u5c06\u8868\u683c\u4e2d\u7684\u4fe1\u606f\uff0c\u5305\u62ec\u9009\u4e2d\u7684\u6587\u4ef6\u5185\u5bb9\uff0c\u901a\u8fc7 POST \u65b9\u6cd5\u63d0\u4ea4\u5230\/SpeechToText\/UploadFile \u8fd9\u4e2a servlet\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0cform \u8868\u683c\u4e2d\u7684 enctype \u53c2\u6570\u5fc5\u987b\u4e3a multipart\/form-data\uff0c\u5426\u5219\u5bf9\u5e94 servlet \u4e2d\u65e0\u6cd5\u8bfb\u53d6\u4e0a\u4f20\u7684\u6587\u4ef6\u5185\u5bb9\u3002\u9875\u9762\u8bbe\u8ba1\u7684\u4e3b\u4f53\u4ee3\u7801\u89c1\u6e05\u5355 1\u3002<\/p>\n<h5 id=\"4.2.2.\u6e05\u5355 1.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762\u4ee3\u7801\u5b9e\u73b0 |outline\" class=\"ibm-h5\">\u6e05\u5355 1.\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u9875\u9762\u4ee3\u7801\u5b9e\u73b0<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_208930\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">id<\/code> <code class=\"htmlscript plain\">= <\/code><code class=\"htmlscript plain\">\"selectFile\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">form<\/code> <code class=\"htmlscript color1\">id<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"uploadFile\"<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"wrapper\"<\/code> <code class=\"htmlscript color1\">action<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"\/SpeechToText\/UploadFile\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript color1\">method<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"post\"<\/code> <code class=\"htmlscript color1\">enctype<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"multipart\/form-data\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">= <\/code><code class=\"htmlscript plain\">\"form-item\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"form-item-attribute\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">label<\/code><code class=\"htmlscript plain\">&gt;Audio File:&lt;\/<\/code><code class=\"htmlscript plain\">label<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"form-item-value\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">input<\/code> <code class=\"htmlscript color1\">type<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"file\"<\/code> <code class=\"htmlscript color1\">name<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"files\"<\/code> <code class=\"htmlscript color1\">id<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"fileupload_input\"<\/code> <code class=\"htmlscript plain\">\/&gt;<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">div<\/code> <code class=\"htmlscript color1\">class<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"form-item-value\"<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">lable<\/code><code class=\"htmlscript plain\">&gt;(Maximum File size is 4MB)&lt;\/<\/code><code class=\"htmlscript plain\">lable<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">form<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">&lt;<\/code><code class=\"htmlscript plain\">button<\/code> <code class=\"htmlscript color1\">id<\/code><code class=\"htmlscript plain\">=<\/code><code class=\"htmlscript plain\">\"upload\"<\/code><code class=\"htmlscript plain\">&gt;upload&lt;\/<\/code><code class=\"htmlscript plain\">button<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">&lt;\/<\/code><code class=\"htmlscript plain\">div<\/code><code class=\"htmlscript plain\">&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h3 id=\"4.3.\u6587\u4ef6\u4e0a\u4f20\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1 |outline\" class=\"ibm-h3\">\u6587\u4ef6\u4e0a\u4f20\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1<\/h3>\n<p>\u670d\u52a1\u5668\u7aef\u91c7\u7528\u6807\u51c6\u7684 Java Web \u67b6\u6784\u3002\u8981\u5728\u524d\u7aef\u9875\u9762\u8c03\u7528\u67d0\u4e2a servlet \u5fc5\u987b\u5728 web.xml \u5b9a\u4e49\u8be5 servlet\uff0c\u8fd9\u4e00\u8fc7\u7a0b\u5728\u8fd9\u91cc\u4e0d\u5728\u7ec6\u8ff0\u3002\u6587\u4ef6\u4e0a\u4f20\u670d\u52a1\u5668\u7aef\u7528\u6765\u63a5\u53d7\u524d\u7aef\u53d1\u8fc7\u6765\u7684 Post \u7684\u8bf7\u6c42\uff0c\u5e76\u5c06\u8bf7\u6c42\u4e2d\u7684\u6587\u4ef6\u4fdd\u5b58\u5230\u670d\u52a1\u5668\u6307\u5b9a\u76ee\u5f55\u4e2d\u3002<\/p>\n<p>\u670d\u52a1\u5668\u7aef\u7684 Upload \u7c7b\u91cc\u9762\u7684 doPost \u65b9\u6cd5\u7528\u6765\u5904\u7406\u524d\u7aef\u53d1\u9001\u8fc7\u6765\u7684 Post \u8bf7\u6c42\uff0cdoPost \u65b9\u6cd5\u5982\u6e05\u5355 2 \u6240\u793a\u3002doPost \u65b9\u6cd5\u4f1a\u5bf9 HTTP \u8bf7\u6c42\u8fdb\u884c\u89e3\u6790\uff0c\u4ee5\u83b7\u53d6 HTTP \u8bf7\u6c42\u4e2d\u5305\u542b\u7684 Post \u8bf7\u6c42\u5185\u5bb9\uff0c\u5e76\u5b58\u653e\u5728 List iter \u53d8\u91cf\u4e2d\uff0c\u7136\u540e\u904d\u5386 iter \u53d8\u91cf\u4ee5\u83b7\u53d6 POST \u8fc7\u6765\u7684\u6240\u6709\u5185\u5bb9\u3002\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u53ea\u5173\u5fc3 POST \u8fc7\u6765\u7684\u6587\u4ef6\uff0c\u800c\u6587\u4ef6\u7684\u5904\u7406\u662f\u5728 processUploadFile \u65b9\u6cd5\u4e2d\u3002\u5728 ProcessUploadFile \u4e2d\uff0c\u901a\u8fc7 item.getName \u65b9\u6cd5\u53ef\u4ee5\u83b7\u53d6\u4e0a\u4f20\u7684\u6587\u4ef6\u540d\uff0c\u901a\u8fc7 item.write \u65b9\u6cd5\u53ef\u4ee5\u5c06\u6587\u4ef6\u4fdd\u5b58\u5230\u6307\u5b9a\u7684\u8def\u5f84\u3002\u4e3a\u4e86\u9632\u6b62\u540c\u540d\u6587\u4ef6\u88ab\u8986\u76d6\u95ee\u9898\uff0c\u53ef\u4ee5\u628a\u65f6\u95f4\u6233\u62fc\u63a5\u5230\u6587\u4ef6\u540d\u4e2d\u8fdb\u884c\u4fdd\u5b58\u3002<\/p>\n<p>\u901a\u8fc7\u8fd9\u6837\u7684\u8bbe\u8ba1\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u524d\u7aef Post \u8fc7\u6765\u7684\u6587\u4ef6\u4fdd\u5b58\u5230\u670d\u52a1\u5668\u6307\u5b9a\u76ee\u5f55\u4e2d\uff0c\u5e76\u53ef\u4ee5\u89e3\u51b3\u540c\u540d\u6587\u4ef6\u88ab\u8986\u76d6\u7684\u95ee\u9898\u3002\u6587\u4ef6\u4fdd\u5b58\u6210\u529f\u4ee5\u540e\uff0c\u901a\u8fc7 HTTPServletResponse \u7684 sendRedirect \u65b9\u6cd5\u5c06\u9875\u9762\u91cd\u5b9a\u4f4d\u5230\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\uff0c\u540c\u65f6\u9700\u8981\u5c06\u670d\u52a1\u5668\u4e0a\u7684\u6587\u4ef6\u540d\u653e\u5728 URL \u4e2d\u4f20\u9012\u5230\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u3002<\/p>\n<h5 id=\"4.3.1.\u6e05\u5355 2.\u670d\u52a1\u5668\u7aef Upload \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 2.\u670d\u52a1\u5668\u7aef Upload \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_583727\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public void doPost(HTTPServletRequest req, HTTPServletResponse res)\u00a0 <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">throws IOException, ServletException\u00a0 <\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">{\u00a0 <\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">try{\u00a0 <\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">DiskFileItemFactory diskFactory = new DiskFileItemFactory();\u00a0 <\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">\/\/ threshold \u6781\u9650\u3001\u4e34\u754c\u503c\uff0c\u5373\u786c\u76d8\u7f13\u5b58 1M\u00a0 <\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">diskFactory.setSizeThreshold(4 * 1024);\u00a0 <\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">\/\/ repository \u8d2e\u85cf\u5ba4\uff0c\u5373\u4e34\u65f6\u6587\u4ef6\u76ee\u5f55\u00a0 <\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">diskFactory.setRepository(new File(tempPath)); <\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">ServletFileUpload upload = new ServletFileUpload(diskFactory);\u00a0 <\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">\/\/ \u8bbe\u7f6e\u5141\u8bb8\u4e0a\u4f20\u7684\u6700\u5927\u6587\u4ef6\u5927\u5c0f 4M\u00a0 <\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">upload.setSizeMax(4 * 1024 * 1024);\u00a0 <\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">\/\/ \u89e3\u6790 HTTP \u8bf7\u6c42\u6d88\u606f\u5934\u00a0 <\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">List fileItems = upload.parseRequest(req);\u00a0 <\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">Iterator iter = fileItems.iterator();<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">while(iter.hasNext())\u00a0 <\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">{\u00a0 <\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">FileItem item = (FileItem)iter.next();\u00a0 <\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">if(item.isFormField())\u00a0 <\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">{\u00a0 <\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">System.out.println(\"\u5904\u7406\u8868\u5355\u5185\u5bb9 ...\");\u00a0 <\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">processFormField(item);\u00a0 <\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">}else{\u00a0 <\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">System.out.println(\"\u5904\u7406\u4e0a\u4f20\u7684\u6587\u4ef6 ...\");\u00a0 <\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">\/\/item \u91cc\u9762\u5305\u542b\u4e0a\u4f20\u7684\u6587\u4ef6\u540d\u548c\u6587\u4ef6\u5185\u5bb9<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">processUploadFile(item);\u00a0 <\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">}\u00a0 <\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">}\/\/ end while()\u00a0 <\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">\/\/pw.close(); <\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"htmlscript plain\">}catch(Exception e){\u00a0 <\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"htmlscript plain\">System.out.println(\"uploadFile \u53d1\u751f\u5f02\u5e38 ...\");\u00a0 <\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"htmlscript plain\">lastUpdatedFile = \"\";<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"htmlscript plain\">e.printStackTrace();\u00a0 <\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"htmlscript plain\">}\/\/ end try ... catch ...\u00a0 <\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"htmlscript plain\">if(\"\".equals(lastUpdatedFile))<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"htmlscript plain\">res.sendRedirect(\"\/SpeechToText\/index.html?upload=fail\");<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"htmlscript plain\">res.sendRedirect(\"\/SpeechToText\/index.html?upload=success&amp;uploadedFileName=\" + lastUpdatedFile);<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"htmlscript plain\">return;<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"htmlscript plain\">}\/\/ end doPost()<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h3 id=\"4.4.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762 |outline\" class=\"ibm-h3\">\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762<\/h3>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762\u53ef\u4ee5\u8ba9\u7528\u6237\u6307\u5b9a\u97f3\u9891\u6587\u4ef6\u7684\u4e00\u4e9b\u53c2\u6570\uff0c\u70b9\u51fb translate \u5373\u53ef\u8bc6\u522b\u4e3a\u5bf9\u5e94\u6587\u5b57\u3002\u70b9\u51fb Back \u6309\u94ae\u53ef\u4ee5\u56de\u5230\u97f3\u9891\u6587\u4ef6\u4e0a\u4f20\u754c\u9762\uff0c\u91cd\u65b0\u9009\u62e9\u6587\u4ef6\u8fdb\u884c\u4e0a\u4f20\u3002<\/p>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762\u5982\u56fe 3 \u6240\u793a\u3002\u5728\u70b9\u51fb translate \u8fdb\u884c\u8bc6\u522b\u4e4b\u524d\uff0c\u5fc5\u987b\u586b\u5199\u6216\u8005\u9009\u62e9 rate\u3001audio \u548c channel \u53c2\u6570\uff0c\u5982\u679c\u6ca1\u6709\u6b63\u786e\u586b\u5199\uff0c\u5c06\u65e0\u6cd5\u8bc6\u522b\u97f3\u9891\u6587\u4ef6\u5185\u5bb9\u3002\u8fd9\u4e9b\u53c2\u6570\u7684\u542b\u4e49\u5728 Waston \u8bed\u97f3\u8bc6\u522b\u670d\u52a1 API \u8be6\u89e3\u4e2d\u5df2\u7ecf\u4ecb\u7ecd\uff0c\u4e0d\u518d\u7ec6\u8ff0\u3002\u6b63\u5e38\u8bc6\u522b\u7ed3\u679c\u4f1a\u5728 result \u6846\u4e2d\u663e\u793a\uff0c\u5982\u56fe 4 \u6240\u793a\u3002<\/p>\n<h5 id=\"4.4.1.\u56fe 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index5885.png\" alt=\"\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\" width=\"369\" height=\"352\" \/><\/p>\n<h5 id=\"4.4.2.\u56fe 4.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u7ed3\u679c |outline\" class=\"ibm-h5\">\u56fe 4.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u7ed3\u679c<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index5904.png\" alt=\"\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u9875\u9762\u7ed3\u679c\" width=\"342\" height=\"335\" \/><\/p>\n<p>\u6e05\u5355 3 \u662f Translate \u529f\u80fd\u7684\u4ee3\u7801\u5b9e\u73b0\uff0c\u901a\u8fc7 Jquery \u6765\u83b7\u53d6\u9875\u9762\u53c2\u6570\uff0c\u63d0\u4ea4 translate \u8bf7\u6c42\u5230\u670d\u52a1\u7aef\/SpeechToText\/SpeechToText \u5bf9\u5e94\u7684 servlet\uff0c\u5e76\u6839\u636e\u670d\u52a1\u5668\u8fd4\u56de\u7684\u503c\uff08\u97f3\u9891\u6587\u4ef6\u5bf9\u5e94\u7684\u6587\u5b57\uff09\u586b\u5199\u5230 Result \u6846\u4e2d\u3002<\/p>\n<h5 id=\"4.4.3.\u6e05\u5355 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b Translate \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 3.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b Translate \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_814254\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">function translate()<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">$(\"#selectFile\").hide();<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">$(\"#parameters\").hide();<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">$(\"#processing\").show();<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">$.post(\"\/SpeechToText\/SpeechToText\", <\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">filepath: getUrlParam(\"uploadedFileName\"),<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">audio: $(\"#audio\").val(),<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">rate: $(\"#rate\").val(),<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">channels : $(\"#channel\").val()<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">}, <\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">function(data,status){<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">$(\"#parameters\").show();<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">$(\"#processing\").hide();<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">if(status == 'success')<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">if(data){<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">$(\"#result\").val(data);<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">alert(\"Status: \" + status);<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">alert(\"Data(return value) is empty!\" + \"\\nStatus: \" + status);<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">alert(\"Data: \" + data + \"\\nStatus: \" + status);<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">);<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript plain\">};<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h3 id=\"4.5.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1 |outline\" class=\"ibm-h3\">\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1<\/h3>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u7528\u6765\u63a5\u53d7\u524d\u7aef\u53d1\u8fc7\u6765\u7684 Post \u7684\u8bf7\u6c42\uff0c\u5e76\u5c06\u5bf9\u5e94\u6587\u4ef6\u4e0a\u4f20\u5230 Waston \u670d\u52a1\u5668\u8fdb\u884c\u8bc6\u522b\uff0c\u5e76\u5c06\u8bc6\u522b\u7ed3\u679c\u8fd4\u56de\u7ed9\u524d\u7aef\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u754c\u9762\u3002<\/p>\n<p>\u4ecb\u7ecd\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u670d\u52a1\u5668\u7aef\u8bbe\u8ba1\u4e4b\u524d\uff0c\u9996\u5148\u4ecb\u7ecd\u4e00\u4e0b Bluemix \u4e2d Watson \u670d\u52a1\u7684 Crendential \u4fe1\u606f\u3002 \u6e05\u5355 4 \u5c55\u793a\u7684\u662f\u4f7f\u7528 Java \u8bed\u8a00\u6765\u83b7\u53d6\u5e76\u89e3\u6790 Watson \u670d\u52a1\u4e2d\u7684\u201cQuestion and Answer\u201d\u670d\u52a1\u7684 Credential \u4fe1\u606f\u3002\u5982\u679c\u8be5\u5e94\u7528\u662f\u90e8\u7f72\u5728 Bluemix \u7684 Liberty \u5bb9\u5668\u4e2d\uff0c\u5219\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cVCAP_SERVICES \u662f\u975e\u7a7a\u7684\u3002\u800c\u5f53\u5e94\u7528\u662f\u5728 Bluemix \u5916\u90e8\u65f6\uff0c\u6211\u4eec\u9700\u8981\u6307\u5b9a VCAP_SERVICES \u7684\u503c\uff0c\u5982\u6e05\u5355 4 \u7684\u7b2c\u4e09\u884c\u6240\u793a\u3002VCAP_SERVICES \u4e2d\u5b58\u50a8\u7684\u662f\u5f53\u524d\u5e94\u7528\u6240\u7ed1\u5b9a\u7684\u6240\u6709 Service \u7684 Credential \u4fe1\u606f\uff0c\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u6839\u636e Service \u7684\u6807\u8bc6 ID \u53d6\u51fa\u76f8\u5e94\u7684 Credential \u4fe1\u606f\u3002\u5728\u6e05\u5355 4 \u4e2d\uff0cQuestion and Answer \u670d\u52a1\u7684\u6807\u8bc6 ID \u4e3a Watson QAAPI-0.1\u3002\u4e4b\u540e\uff0c\u5bf9\u4e8e Credential \u4fe1\u606f\u7684\u89e3\u6790\u4ee5\u53ca\u8d4b\u503c\uff0c\u540c\u6837\u9002\u5e94\u4e8e\u5176\u4ed6 Bluemix \u670d\u52a1\u3002\u5728\u62ff\u5230\u4e86\u8fd9\u4e9b\u4fe1\u606f\u4e4b\u540e\uff0c\u4fbf\u53ef\u6839\u636e Bluemix \u670d\u52a1\u6240\u63d0\u4f9b\u7684\u8c03\u7528 API\uff0c\u8fdb\u884c\u5404\u79cd\u8bf7\u6c42\u64cd\u4f5c\u3002<\/p>\n<h5 id=\"4.5.1.\u6e05\u5355 4.\u4f7f\u7528 Java \u83b7\u53d6 Bluemix \u4e2d Watson \u670d\u52a1\u7684 Crendential \u4fe1\u606f\uff1a|outline\" class=\"ibm-h5\">\u6e05\u5355 4.\u4f7f\u7528 Java \u83b7\u53d6 Bluemix \u4e2d Watson \u670d\u52a1\u7684 Crendential \u4fe1\u606f\uff1a<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_2346\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">String VCAP_SERVICES = System.getenv(\"VCAP_SERVICES\");<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">if(VCAP_SERVICES ==null){<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">\/\/\u5c06 Watson \u670d\u52a1\u7684 Credential \u4fe1\u606f\u62f7\u8d1d\u81f3\u6b64\uff0c<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">VCAP_SERVICES=\"{ \\\"Watson QAAPI-0.1\\\" : [ { \\\"name\\\" : \\\"mt-svc\\\"......<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">\/\/\u6b64\u5904\u7565\u53bb\u540e\u9762\u5177\u4f53\u7528\u6237\u4fe1\u606f<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">if (VCAP_SERVICES != null) {<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">try {<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">JSONObject obj = (JSONObject)JSON.parse(VCAP_SERVICES);<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">JSONArray service = obj.getJSONArray(\"Watson QAAPI-0.1\");<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">\/\/ \u83b7\u53d6\u8be5\u670d\u52a1\u7684 Credential \u4fe1\u606f<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">JSONObject catalog = service.getJSONObject(0);<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">\/\/ \u89e3\u6790 Credential \u4fe1\u606f\uff0c\u5e76\u628a\u76f8\u5173\u5b57\u6bb5\u8d4b\u503c\u7ed9\u672c\u5730\u6210\u5458\u5c5e\u6027<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">JSONObject credentials = catalog.getJSONObject(\"credentials\");<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">endpoint = credentials.getString(\"uri\");<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">username = credentials.getString(\"userid\");<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">password = credentials.getString(\"password\");<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">} catch (Exception e) {<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>\u97f3\u9891\u6587\u4ef6\u8bc6\u522b\u7684\u8fc7\u7a0b\u4e3b\u8981\u5728\u670d\u52a1\u5668\u7aef\u7684 speech2text \u65b9\u6cd5\u4e2d\u5b9e\u73b0\uff0cspeech2text \u65b9\u6cd5\u5982\u6e05\u5355 5 \u6240\u793a\u3002Speech2text \u65b9\u6cd5\u5c06\u4e0a\u4f20\u7684\u6587\u4ef6\u540d\u3001audio \u7c7b\u578b\u3001rate \u503c\u548c channel \u503c\u4f5c\u4e3a\u8f93\u5165\u53c2\u6570\u3002\u901a\u8fc7\u6587\u4ef6\u540d filename \u53ef\u4ee5\u627e\u5230\u670d\u52a1\u5668\u4e0a\u5b58\u653e\u7684\u5bf9\u5e94\u6587\u4ef6\uff0c\u548c audio \u6307\u3001rate \u503c\u548c channel \u503c\u4e00\u8d77\u8f6c\u5316\u4e3a FileEntity \u4f5c\u4e3a POST \u53c2\u6570\u63d0\u4ea4\u5230 Waston \u670d\u52a1\u5668\u3002Userid\u3001password \u662f\u8bbf\u95ee Waston \u670d\u52a1\u5668\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\uff0crestServerURL \u662f Waston \u670d\u52a1\u5668\u5bf9\u5916\u63d0\u4f9b\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u7684\u7ed3\u6784\uff0c\u8fd9\u4e09\u4e2a\u53d8\u91cf\u7684\u503c\u5728 credentials \u53d8\u91cf\u4e2d\u63d0\u53d6\u3002\u6709\u4e86\u8fd9\u4e9b\u53d8\u91cf\u4ee5\u540e\u5c31\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528 Waston \u670d\u52a1\u5668\u7684\u8bed\u97f3\u8bc6\u522b\u670d\u52a1\u961f\u97f3\u9891\u6587\u4ef6\u8fdb\u884c\u8bc6\u522b\u3002\u8c03\u7528 Waston \u670d\u52a1\u5668\u7684\u4ee3\u7801\u662f\u56fa\u5b9a\u7684\uff0c\u53ef\u4ee5\u53c2\u8003\u6e05\u5355 5\u3002Waston \u670d\u52a1\u5668\u8bc6\u522b\u6210\u529f\u4ee5\u540e\u4f1a\u8fd4\u56de HTTPEntity entity \u53d8\u91cf\uff0c\u901a\u8fc7 EntityUtils.toString \u65b9\u6cd5\u5373\u53ef\u4ece entity \u53d8\u91cf\u4e2d\u63d0\u53d6\u8bc6\u522b\u51fa\u6765\u7684\u6587\u5b57\u3002<\/p>\n<h5 id=\"4.5.2.\u6e05\u5355 5.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b speech2text \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 5.\u97f3\u9891\u6587\u4ef6\u8bc6\u522b speech2text \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_240332\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public static String speech2text(String fileName, String audio, String rate, String channel) <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript spaces\">\u00a0\u00a0<\/code><code class=\"htmlscript plain\">throws Exception <\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">{<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">String userid = null, password = null, restServerURL = null;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">fileName = \"C:\/uploadedFile\/\"+fileName;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">String fileType = audio + \"; rate=\" + rate + \"; channels=\" + channel;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">userid = credentials.getString(\"username\");\/\/credentials \u7684\u5b9a\u4e49\u5728\u540e\u9762\u4ecb\u7ecd<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">password =\u00a0 credentials.getString(\"password\");<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">restServerURL = credentials.getString(\"url\"); <\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">CredentialsProvider provider = new BasicCredentialsProvider();<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(userid, password);<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">provider.setCredentials(AuthScope.ANY, credentials);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">SSLContextBuilder builder = new SSLContextBuilder();<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">builder.build(),SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">CloseableHTTPClient client = HTTPClients.custom().<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">setSSLSocketFactory(sslsf).<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">setDefaultCredentialsProvider(provider).<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">build();<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">HTTPPost HTTPPost = new HTTPPost(restServerURL+\"\/v1\/recognize?continuous=true\");<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">File file = new File(fileName);<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">FileEntity ent = new FileEntity(file,fileType);<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">ent.setContentType(fileType);<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">HTTPPost.setEntity(ent);<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">HTTPResponse response = client.execute(HTTPPost);\/\/\u63d0\u4ea4\u8bf7\u6c42\u5230 Waston \u670d\u52a1\u5668<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">HTTPEntity entity = response.getEntity();\/\/\u83b7\u53d6 Waston \u670d\u52a1\u5668\u8fd4\u56de\u7ed3\u679c<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">String responseString = EntityUtils.toString(entity, \"UTF-8\");\/\/\u63d0\u53d6\u8bc6\u522b\u51fa\u6765\u7684\u6587\u5b57<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript plain\">return responseString;\/\/\u8fd4\u56de\u8bc6\u522b\u7ed3\u679c<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h2 id=\"5IBMWatson\u7ec3\u4e60\u5de5\u7a0b\u5b9e\u8df5outline\" class=\"ibm-h2\">IBM Watson \u7ec3\u4e60\u5de5\u7a0b\u5b9e\u8df5<\/h2>\n<p>\u4e3a\u4f7f\u60a8\u80fd\u591f\u66f4\u65b9\u4fbf\u76f4\u89c2\u5730\u4f7f\u7528 Watson \u670d\u52a1\uff0c\u672c\u5c0f\u8282\u4f1a\u901a\u8fc7\u4e00\u4e2a\u5177\u4f53\u7684 Web \u5e94\u7528\u5f00\u53d1\u6765\u5c55\u793a\u5982\u4f55\u4f7f\u7528 Watson \u670d\u52a1\u5b9e\u73b0\u76f8\u5e94\u7684\u529f\u80fd\u9700\u6c42\u3002<\/p>\n<p>Web \u5e94\u7528\u6240\u8981\u5b9e\u73b0\u7684\u529f\u80fd\uff0c\u662f\u4f7f\u7528 Watson \u7684 Question and Answer \u670d\u52a1\uff0c\u5bf9\u7528\u6237\u8f93\u5165\u7684\u95ee\u9898\u8fdb\u884c\u56de\u7b54\uff0c\u7136\u540e\u4f7f\u7528 Watson \u7684 Machine Translation \u670d\u52a1\uff0c\u5c06\u8fd4\u56de\u7684\u7b54\u6848\u7531\u82f1\u6587\u7ffb\u8bd1\u6210\u4e2d\u6587\u3002<\/p>\n<h3 id=\"5.1.Web \u5de5\u7a0b\u6784\u5efa |outline\" class=\"ibm-h3\">Web \u5de5\u7a0b\u6784\u5efa<\/h3>\n<p>\u7531\u4e8e\u6211\u4eec\u8981\u5b9e\u73b0\u7684\u529f\u80fd\u8f83\u7b80\u5355\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 JSP + Servlet \u6765\u5b9e\u73b0 Web \u524d\u7aef\u548c\u540e\u7aef\u670d\u52a1\u3002\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 Eclipse \u6784\u5efa\u4e00\u4e2a Dynamic Web Project\uff0c\u5982\u56fe 5\uff1a<\/p>\n<h5 id=\"5.1.1.\u56fe 5.eclipse \u4e2d\u6784\u5efa Dynamic Web Project|outline\" class=\"ibm-h5\">\u56fe 5.eclipse \u4e2d\u6784\u5efa Dynamic Web Project<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10646.png\" alt=\"eclipse \u4e2d\u6784\u5efa Dynamic Web Project\" width=\"497\" height=\"710\" \/><\/p>\n<h3 id=\"5.2.\u9875\u9762\u529f\u80fd\u8bbe\u8ba1 |outline\" class=\"ibm-h3\">\u9875\u9762\u529f\u80fd\u8bbe\u8ba1<\/h3>\n<p>\u7531\u4e8e\u672c\u7ec3\u4e60\u5de5\u7a0b\u4e3b\u8981\u4fa7\u91cd\u540e\u7aef Watson \u670d\u52a1\u7684\u4f7f\u7528\uff0c\u6240\u4ee5\u5728\u524d\u7aef\u65b9\u9762\u8bbe\u8ba1\u8f83\u4e3a\u7b80\u5355\u5373\u53ef\u3002\u53ea\u9700\u8981\u6784\u5efa\u4e24\u4e2a\u9875\u9762\uff0c\u4e00\u4e2a\u7528\u4e8e\u8f93\u5165\u7528\u6237\u4fe1\u606f\uff08\u5373\u5177\u4f53\u95ee\u9898\uff09\uff0c\u4e00\u4e2a\u7528\u4e8e\u663e\u793a Watson \u7684\u8fd4\u56de\u4fe1\u606f\uff08\u5373\u95ee\u9898\u7684\u7b54\u6848\uff09\u3002\u8fd9\u4e24\u4e2a\u9875\u9762\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<h5 id=\"5.2.1.\u56fe 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u4fe1\u606f\u8f93\u5165\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u4fe1\u606f\u8f93\u5165\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10785.png\" alt=\"Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u4fe1\u606f\u8f93\u5165\u9875\u9762\" width=\"549\" height=\"274\" \/><\/p>\n<h5 id=\"5.2.2.\u56fe 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u8fd4\u56de\u4fe1\u606f\u663e\u793a\u9875\u9762 |outline\" class=\"ibm-h5\">\u56fe 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u8fd4\u56de\u4fe1\u606f\u663e\u793a\u9875\u9762<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index10812.png\" alt=\"Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7684\u8fd4\u56de\u4fe1\u606f\u663e\u793a\u9875\u9762\" width=\"501\" height=\"247\" \/><\/p>\n<p>\u9875\u9762 1 \u7684\u6587\u672c\u8f93\u5165\u57df\u53ef\u653e\u5728\u4e00\u4e2a Form \u4e2d\uff0c\u901a\u8fc7 ask Watson \u6309\u94ae\u63d0\u4ea4\u5230\u540e\u7aef\u7684\u4e00\u4e2a servlet \u8fdb\u884c\u5904\u7406\u3002\u9875\u9762 2 \u7684\u8fd4\u56de\u4fe1\u606f\u53ef\u901a\u8fc7\u5728 servlet \u4e2d\u4f7f\u7528 request.setAttribute()\u65b9\u6cd5\u5c06 Watson \u8fd4\u56de\u7684\u4fe1\u606f\u653e\u5165\u5176\u4e2d\uff0c\u7136\u540e\u5728\u9875\u9762 2 \u4e2d\u8c03\u7528 request.getAttribute()\u5c06\u5176\u53d6\u51fa\u5e76\u5728\u9875\u9762\u663e\u793a\u3002\u7531\u4e8e\u9875\u9762\u903b\u8f91\u8f83\u4e3a\u7b80\u5355\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e0d\u518d\u7ed9\u51fa\u6709\u5173\u9875\u9762\u65b9\u9762\u7684\u4ee3\u7801\u3002<\/p>\n<h3 id=\"5.3.\u540e\u7aef\u4e1a\u52a1\u5904\u7406 |outline\" class=\"ibm-h3\">\u540e\u7aef\u4e1a\u52a1\u5904\u7406<\/h3>\n<p>\u5728\u540e\u7aef\uff0c\u6211\u4eec\u9700\u8981\u6709\u4e00\u4e2a servlet \u6765\u5904\u7406\u901a\u8fc7\u524d\u7aef\u9875\u9762\u63d0\u4ea4\u8fc7\u6765\u7684\u8bf7\u6c42\uff0c\u8fd8\u9700\u8981\u6709\u4e00\u4e2a\u670d\u52a1\u7c7b\u6765\u4e13\u95e8\u5904\u7406\u540c Watson \u670d\u52a1\u4e4b\u95f4\u7684\u4ea4\u4e92\uff0c\u56e0\u6b64\uff0c\u540e\u7aef\u7684\u7c7b\u56fe\u5982\u4e0b\uff1a<\/p>\n<h5 id=\"5.3.1.\u56fe 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef\u7c7b\u56fe |outline\" class=\"ibm-h5\">\u56fe 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef\u7c7b\u56fe<\/h5>\n<p><img loading=\"lazy\" class=\"ibm-downsize\" src=\"https:\/\/www.ibm.com\/developerworks\/cn\/cloud\/library\/1512_zhansh_speechtotext\/index11108.png\" alt=\"Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef\u7c7b\u56fe\" width=\"434\" height=\"177\" \/><\/p>\n<p>QAServlet \u6bd4\u8f83\u7b80\u5355\uff0c\u5b83\u6240\u8c03\u7528\u7684\u5927\u90e8\u5206\u65b9\u6cd5\u90fd\u5728 WatsonService \u7c7b\u4e2d\u3002WatsonService \u8d1f\u8d23\u83b7\u53d6\u4e0e Watson \u670d\u52a1\u76f8\u5173\u7684\u5404\u79cd\u8ba4\u8bc1\u4fe1\u606f\uff0c\u4ee5\u53ca\u4e0e\u8fdc\u7a0b Watson \u670d\u52a1\u4e4b\u95f4\u7684\u4ea4\u4e92\u3002\u5173\u4e8e\u8ba4\u8bc1\u4fe1\u606f\u7684\u83b7\u53d6\uff0c\u8fd9\u91cc\u4f1a\u5728 WatsonService \u7c7b\u88ab\u521b\u5efa\u65f6\u6765\u521d\u59cb\u5316 username \u548c password \u7b49\uff0c\u5177\u4f53\u65b9\u6cd5\u8bf7\u53c2\u7167\u524d\u9762\u7684\u6e05\u5355 6\u3002<\/p>\n<p>\u4e0e Watson \u670d\u52a1\u4e4b\u95f4\u7684\u4ea4\u4e92\u65b9\u9762\uff0c\u6309\u7167\u8bbe\u60f3\u6211\u4eec\u4f1a\u4f7f\u7528\u4e24\u4e2a\u670d\u52a1\uff0c\u6240\u4ee5\u6bcf\u4e2a\u670d\u52a1\u5404\u5bf9\u5e94\u4e00\u4e2a\u65b9\u6cd5\u3002askWatson \u65b9\u6cd5\u7684\u5177\u4f53\u4ee3\u7801\u5982\u6e05\u5355 6 \u6240\u793a\uff1a<\/p>\n<h5 id=\"5.3.2.\u6e05\u5355 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef askWatson \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 6.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef askWatson \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_737637\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public static String askWatson(String question) throws Exception { <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">CredentialsProvider provider = new BasicCredentialsProvider();<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(username, password);<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">provider.setCredentials(AuthScope.ANY, credentials);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">SSLContextBuilder builder = new SSLContextBuilder();<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">builder.build(),SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">CloseableHTTPClient client = HTTPClients.custom().<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">setSSLSocketFactory(sslsf).<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">setDefaultCredentialsProvider(provider).<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">build();<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">HTTPPost HTTPPost = new HTTPPost(requestURI);<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">StringEntity ent = new StringEntity(\"{\\\"question\\\" : {\\\"questionText\\\" : \\\"\" + question + \"\\\"}}\");<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">ent.setContentType(\"application\/json\");<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">HTTPPost.setEntity(ent);<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">HTTPPost.setHeader(\"X-SyncTimeOut\", \"60\");<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">HTTPResponse response = client.execute(HTTPPost);<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">HTTPEntity entity = response.getEntity();<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">String responseString = EntityUtils.toString(entity, \"UTF-8\");<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript plain\">return responseString;<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>askWatson \u65b9\u6cd5\u63a5\u53d7\u4e00\u4e2a\u5b57\u7b26\u4e32\u7c7b\u578b\u7684\u53c2\u6570\u4f5c\u4e3a\u65b9\u6cd5\u7684\u8f93\u5165\uff0c\u7136\u540e\u4f7f\u7528 Apache \u7684 HTTPclient \u5305\u4e2d\u7684\u76f8\u5173\u7c7b\u6784\u5efa\u4e86\u4e00\u4e2a client \u5bf9\u8c61\uff0c\u5305\u542b\u76f8\u5173 credential \u4fe1\u606f\u3002\u63a5\u4e0b\u6765\u6784\u9020\u4e00\u4e2a HTTPPost \u5bf9\u8c61\uff0c\u5b83\u7684 Entity \u9700\u8981\u4f7f\u7528 StringEntity\uff0cString \u7684\u683c\u5f0f\u9700\u8981\u53c2\u8003 Watson \u670d\u52a1\u7684 API\uff08\u5173\u4e8e Watson \u670d\u52a1\u7684 API, \u5b83\u7684\u6587\u6863\u94fe\u63a5\u90fd\u4f1a\u653e\u5728\u8be5\u670d\u52a1\u5728 Bluemix \u4e2d\u7684\u56fe\u6807\u4e0b\u9762\uff09\u3002\u7136\u540e\u4f7f\u7528 client \u5bf9\u8c61\u6765\u6267\u884c HTTPPost \u8bf7\u6c42\uff0c\u5e76\u5c06\u8fd4\u56de\u7ed3\u679c\u4fdd\u5b58\u5230 HTTPResponse \u5bf9\u8c61\u4e2d\uff0c\u518d\u8fdb\u884c\u8fdb\u4e00\u6b65\u5904\u7406\uff0c\u5c31\u53ef\u5f97\u5230\u8fd4\u56de\u7684\u7b54\u6848\u5b57\u7b26\u4e32\u3002<\/p>\n<p>WatsonService \u7c7b\u4e2d\u7684\u53e6\u4e00\u65b9\u6cd5 translateText \u4f1a\u5bf9\u8fd4\u56de\u7684\u7b54\u6848\u5b57\u7b26\u4e32\u8fdb\u884c\u7ffb\u8bd1\u3002\u7531\u4e8e Question and Answer \u670d\u52a1\u8fd4\u56de\u7684\u90fd\u662f\u82f1\u6587\u7ed3\u679c\uff0c\u56e0\u6b64\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 Watson \u7684\u7ffb\u8bd1\u670d\u52a1\u5c06\u5176\u7531\u82f1\u6587\u7ffb\u8bd1\u4e3a\u4e2d\u6587\u3002<\/p>\n<p>translateText \u65b9\u6cd5\u540c\u6837\u63a5\u53d7\u4e00\u4e2a\u5b57\u7b26\u4e32\u7c7b\u578b\u7684\u53c2\u6570\u4f5c\u4e3a\u65b9\u6cd5\u7684\u8f93\u5165\uff0c\u65b9\u6cd5\u7684\u8fd4\u56de\u503c\u5373\u662f\u5bf9\u8f93\u5165\u53c2\u6570\u7684\u7ffb\u8bd1\u7ed3\u679c\u3002\u5177\u4f53\u4ee3\u7801\u5982\u6e05\u5355 7 \u6240\u793a\uff1a<\/p>\n<h5 id=\"5.3.3.\u6e05\u5355 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef translateText \u65b9\u6cd5\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 7.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef translateText \u65b9\u6cd5\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_866841\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<div class=\"line number48 index47 alt1\">48<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">public String translateText(String text){<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">\/\/\u6307\u5b9a\u5b57\u7b26\u4e32\u7684\u8bed\u8a00\u7c7b\u578b\u53ca\u6240\u9700\u7ffb\u8bd1\u7684\u76ee\u6807\u8bed\u8a00\u7c7b\u578b<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">String sid = \"mt-enus-zhcn\";<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">String result = \"\";<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">try {<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">String post = \"rt=text&amp;sid=\" + URLEncoder.encode(sid, \"UTF-8\") +<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">\"&amp;txt=\" + URLEncoder.encode(text, \"UTF-8\");<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">\/\/ \u51c6\u5907 HTTP \u8fde\u63a5<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript plain\">HTTPURLConnection conn = (HTTPURLConnection)new URL(endpoint).openConnection();<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">conn.setDoInput(true);<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">conn.setDoOutput(true);<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">conn.setUseCaches(false);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"htmlscript plain\">conn.setRequestMethod(\"POST\");<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Accept\", \"*\/*\");<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Connection\", \"Keep-Alive\");<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Content-Type\", \"application\/x-www-form-urlencoded\");<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">String auth = username + \":\" + password;<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">String encoded = new String(Base64.encodeBase64(auth.getBytes()));<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">conn.setRequestProperty(\"Authorization\", String.format(\"Basic %s\", encoded));<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">DataOutputStream output = new DataOutputStream(conn.getOutputStream());<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"htmlscript spaces\">\u00a0\u00a0<\/code><code class=\"htmlscript plain\">\/\/\u5efa\u7acb\u8fde\u63a5<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"htmlscript plain\">conn.connect();<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"htmlscript plain\">\/\/\u53d1\u9001 POST \u8bf7\u6c42<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"htmlscript plain\">output.writeBytes(post);<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"htmlscript plain\">output.flush();<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"htmlscript plain\">output.close();<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"htmlscript plain\">\/\/ \u8bfb\u53d6\u8fd4\u56de\u7ed3\u679c<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"htmlscript plain\">BufferedReader rdr = new BufferedReader(new InputStreamReader(conn.getInputStream(), \"UTF-8\"));<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"htmlscript plain\">if (conn.getResponseCode()==HTTPURLConnection.HTTP_OK)<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"htmlscript plain\">System.out.println(\"Response OK\u00a0 from: \"+conn.getURL().toString());<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"htmlscript plain\">else<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"htmlscript plain\">System.err.println(\"Unsuccesful response: \"+conn.getResponseCode()+ \" from: \"+conn.getURL().toString());<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"htmlscript plain\">String line = \"\";<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"htmlscript plain\">StringBuffer buf = new StringBuffer();<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"htmlscript plain\">while ((line = rdr.readLine()) != null) {<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"htmlscript plain\">buf.append(line);<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"htmlscript plain\">buf.append(\"\\n\");<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"htmlscript plain\">rdr.close();<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"htmlscript plain\">return buf.toString();<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"htmlscript plain\">} catch (MalformedURLException e) {<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"htmlscript plain\">} catch (Exception e) {<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number46 index45 alt1\"><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"htmlscript plain\">return result;<\/code><\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>\u4e0d\u540c\u4e8e askWatson \u65b9\u6cd5\uff0c\u8fd9\u91cc\u5bf9 HTTP \u8fde\u63a5\u548c\u8bf7\u6c42\u7684\u6784\u5efa\uff0c\u4f7f\u7528\u7684\u662f JDK \u7684 API \u800c\u5e76\u975e Apache HTTPClient\uff0c\u5bf9\u8fd4\u56de\u7ed3\u679c\u7684\u5904\u7406\u4e5f\u540c\u6837\u4f7f\u7528 JDK \u7684 API\u3002\u5f53\u7136\uff0c\u4f7f\u7528 Apahce HTTPClient \u4e5f\u53ef\u5b9e\u73b0\u8fd9\u4e00\u529f\u80fd\u3002\u4ee3\u7801\u4e2d\u9700\u8981\u7279\u522b\u8bf4\u660e\u7684\u662f\u5bf9 sid \u53d8\u91cf\u7684\u6307\u5b9a\u3002sid \u53d8\u91cf\u58f0\u660e\u7684\u662f\u8f93\u5165\u5b57\u7b26\u4e32\u7684\u8bed\u8a00\u7c7b\u578b\u53ca\u6240\u8981\u7ffb\u8bd1\u7684\u76ee\u6807\u8bed\u8a00\u7c7b\u578b\u3002\u8be5\u53d8\u91cf\u5fc5\u987b\u88ab\u5305\u542b\u5728 HTTPPost \u8bf7\u6c42\u4e2d\uff0c\u5426\u5219 Watson \u7ffb\u8bd1\u670d\u52a1\u4f1a\u8ba4\u4e3a\u8bf7\u6c42\u975e\u6cd5\u3002\u76ee\u524d Bluemix \u4e2d\u7684 Watson \u7ffb\u8bd1\u670d\u52a1\u53ea\u5f00\u653e\u4e86\u6709\u9650\u7684\u51e0\u79cd\u8bed\u8a00\u4e4b\u95f4\u7684\u6587\u5b57\u7ffb\u8bd1\uff0c\u5176\u5b9e\u7528\u6027\u8fd8\u6709\u5f85\u63d0\u9ad8\u3002<\/p>\n<p>WatsonService \u7c7b\u4e2d\u8fd8\u6709\u4e00\u4e2a\u79c1\u6709\u65b9\u6cd5 parseResult\uff0c\u4f5c\u7528\u662f\u5bf9 Watson \u670d\u52a1\u6240\u8fd4\u56de\u7684\u5b57\u7b26\u4e32\u4fe1\u606f\u8fdb\u884c\u5904\u7406\u3002\u672c\u7ec3\u4e60\u5de5\u7a0b\u4e2d\u7528\u5230\u7684\u8fd9\u4e24\u4e2a Watson \u670d\u52a1\u6240\u8fd4\u56de\u7684\u5b57\u7b26\u4e32\u683c\u5f0f\u662f\u4e0d\u540c\u7684\u3002Watson \u7ffb\u8bd1\u670d\u52a1\u6240\u8fd4\u56de\u7684\u5b57\u7b26\u4e32\u683c\u5f0f\u8f83\u4e3a\u7b80\u5355\uff0c\u4e0d\u9700\u8981\u505a\u7279\u6b8a\u5904\u7406\u5373\u53ef\u76f4\u63a5\u4f7f\u7528\u3002\u800c Question and Answer \u670d\u52a1\u8fd4\u56de\u7684\u662f JSON \u5b57\u7b26\u4e32\uff0c\u56e0\u6b64\u9700\u8981\u4f7f\u7528 parseResult \u65b9\u6cd5\u6765\u5904\u7406\u8fd9\u4e2a JSON \u5b57\u7b26\u4e32\uff0c\u5c06\u5176\u4e2d\u6709\u7528\u7684\u57df\u503c\u62bd\u53d6\u51fa\u6765\uff0c\u4f5c\u4e3a\u7ed3\u679c\u8fd4\u56de\u7ed9\u8c03\u7528\u5c42\u3002\u7531\u4e8e\u5bf9 JSON \u5b57\u7b26\u4e32\u5904\u7406\u7684\u4ee3\u7801\u8f83\u4e3a\u5e38\u89c1\uff0c\u56e0\u6b64\u8fd9\u91cc\u4e0d\u518d\u7ed9\u51fa parseResult \u65b9\u6cd5\u7684\u5177\u4f53\u5185\u5bb9\u3002<\/p>\n<p>\u5bf9\u4e8e\u53e6\u4e00\u4e2a\u7c7b QAServlet \u800c\u8a00\uff0c\u5176 doGet \u6216 doPost \u65b9\u6cd5\u53ef\u76f4\u63a5\u8c03\u7528 WatsonService \u4e2d\u63d0\u4f9b\u7684\u5404\u79cd\u65b9\u6cd5\u6765\u5bf9\u4ece\u524d\u7aef\u5f97\u5230\u7684\u5b57\u7b26\u4e32\u8fdb\u884c\u5904\u7406\uff0c\u5176\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<h5 id=\"5.3.4.\u6e05\u5355 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef QAServlet \u7c7b\u7684\u4e3b\u8981\u4ee3\u7801 |outline\" class=\"ibm-h5\">\u6e05\u5355 8.Watson \u7ec3\u4e60\u5de5\u7a0b\u540e\u7aef QAServlet \u7c7b\u7684\u4e3b\u8981\u4ee3\u7801<\/h5>\n<div class=\"ibm-syntax-container\">\n<div>\n<div id=\"highlighter_82510\" class=\"syntaxhighlighter  htmlscript\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"htmlscript plain\">protected void doPost(HTTPServletRequest req, HTTPServletResponse resp)<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"htmlscript plain\">throws ServletException, IOException {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"htmlscript plain\">\/\/\u8bfb\u53d6\u524d\u7aef\u9875\u9762\u8f93\u5165\u7684\u95ee\u9898<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"htmlscript plain\">String question = req.getParameter(\"question\");<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"htmlscript plain\">WatsonService watsonSvc = new WatsonService();<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"htmlscript plain\">String answer =null;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"htmlscript plain\">String translatedAnswer = null;<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"htmlscript plain\">try {<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"htmlscript spaces\">\u00a0<\/code><code class=\"htmlscript plain\">\/\/\u5bf9\u95ee\u9898\u8fdb\u884c\u56de\u7b54<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"htmlscript plain\">answer = watsonSvc.askWatson(question);<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"htmlscript plain\">\/\/\u5bf9\u7b54\u6848\u8fdb\u884c\u7ffb\u8bd1<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"htmlscript plain\">translatedAnswer = watsonSvc.translateText(answer);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"htmlscript plain\">req.setAttribute(\"answer\", translatedAnswer);<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"htmlscript plain\">req.getRequestDispatcher(\"result.jsp\").forward(req,resp); <\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"htmlscript plain\">} catch (Exception e) {<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"htmlscript plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"htmlscript plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>QAServlet \u4f1a\u5c06\u4ece\u524d\u7aef\u5f97\u5230\u7684\u95ee\u9898\u8fdb\u884c\u56de\u7b54\u5e76\u7ffb\u8bd1\uff0c\u7136\u540e\u653e\u5230 request \u5bf9\u8c61\u4e2d\uff0c\u5e76\u4f7f\u524d\u7aef\u9875\u9762\u8df3\u8f6c\u5230 result.jsp \u6765\u5bf9\u7ed3\u679c\u8fdb\u884c\u663e\u793a\u3002<\/p>\n<p>\u4ee5\u4e0a\u662f\u5bf9 Watson \u7ec3\u4e60\u5de5\u7a0b\u4e2d\u4e3b\u8981\u7684\u7c7b\u53ca\u65b9\u6cd5\u7684\u8be6\u7ec6\u8bf4\u660e\u3002\u901a\u8fc7\u8be5\u7ec3\u4e60\u5de5\u7a0b\uff0c\u5e0c\u671b\u60a8\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u80fd\u6ce8\u610f\u5230\uff0cBluemix \u4e2d\u7684 Watson \u670d\u52a1\u6709\u7740\u4e0d\u540c\u7684 API\uff0c\u5728\u8fdb\u884c\u8c03\u7528\u65f6\uff0c\u9700\u8981\u9996\u5148\u53c2\u8003\u5176 API \u6587\u6863\uff0c\u4f7f\u7528\u5408\u9002\u7684\u65b9\u5f0f\u8fdb\u884c\u8c03\u7528\u3002\u540c\u65f6\uff0c\u4e0d\u540c\u7684 Watson \u670d\u52a1\u6240\u8fd4\u56de\u7684\u7ed3\u679c\u683c\u5f0f\u4e5f\u4e0d\u5c3d\u76f8\u540c\uff0c\u6709\u53ef\u80fd\u9700\u8981\u505a\u8fdb\u4e00\u6b65\u5904\u7406\u624d\u80fd\u591f\u4f7f\u7528\u3002<\/p>\n<p>Watson \u7ec3\u4e60\u5de5\u7a0b\u53ef\u88ab\u5bfc\u51fa\u6210 WAR \u5305\uff0c\u90e8\u7f72\u5728 Bluemix \u5916\u90e8\u7684\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u76f4\u63a5\u8fd0\u884c\u3002Bluemix \u63d0\u4f9b\u4e86 Liberty server \u6765\u8fd0\u884c Java Web \u7a0b\u5e8f\uff0c\u56e0\u6b64\u6211\u4eec\u4e5f\u53ef\u4ee5\u5c06\u8be5 WAR \u5305\u90e8\u7f72\u5230 Bluemix \u5e73\u53f0\u4e2d\uff0c\u5177\u4f53\u7684\u90e8\u7f72\u65b9\u6cd5\u53ca\u6b65\u9aa4\u8bf7\u53c2\u8003<a href=\"https:\/\/www.ng.bluemix.net\/docs\/#cli\/index.html%23pushingwar\">Bluemix \u5b98\u65b9\u6587\u6863<\/a>\u3002<\/p>\n<h2 id=\"6\u7ed3\u8bedoutline\" class=\"ibm-h2\">\u7ed3\u8bed<\/h2>\n<p>Bluemix \u4e3a\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u4e86\u4e00\u4e2a\u53ef\u5feb\u901f\u5f00\u53d1\u3001\u90e8\u7f72\u548c\u7ba1\u7406\u5e94\u7528\u7684\u5e73\u53f0\uff0c\u5b83\u7684\u5f00\u653e\u6027\u4f7f\u5f97\u5f00\u53d1\u8005\u53ef\u4ee5\u63d0\u4f9b\u81ea\u5df1\u7684\u670d\u52a1\u5e76\u53d1\u5e03\u5230\u5e73\u53f0\u4e0a\uff0c\u4f9b\u5176\u4ed6\u5f00\u53d1\u4eba\u5458\u4f7f\u7528\u3002IBM Watson \u56e2\u961f\u76ee\u524d\u5728 Bluemix \u5e73\u53f0\u5f00\u53d1\u5e76\u63d0\u4f9b\u7684\u8fd9 9 \u79cd\u670d\u52a1\uff0c\u867d\u7136\u6210\u719f\u5ea6\u4e0d\u9ad8\uff0c\u4f46\u8fd9\u5df2\u5f70\u663e\u51fa\u4e00\u79cd\u8d8b\u52bf\uff0c\u5373 Bluemix \u6240\u63d0\u4f9b\u7684\u5e73\u53f0\uff0c\u662f\u4eca\u540e\u8ba4\u77e5\u8ba1\u7b97\u670d\u52a1\u53d1\u6325\u4f5c\u7528\u7684\u821e\u53f0\u4e4b\u4e00\u3002\u5f00\u53d1\u90fd\u901a\u8fc7 Bluemix \u4f7f\u7528\u8ba4\u77e5\u8ba1\u7b97\u670d\u52a1\uff0c\u53ef\u4ee5\u907f\u514d\u5404\u79cd\u73af\u5883\u7684\u91cd\u590d\u642d\u5efa\uff0c\u66f4\u4e13\u6ce8\u4e8e\u8ba4\u77e5\u8ba1\u7b97\u672c\u8eab\u7684\u7814\u7a76\u4e0e\u4f7f\u7528\u3002\u672c\u6587\u901a\u8fc7\u4e00\u4e2a\u5b9e\u9645\u7684\u7ec3\u4e60\u5de5\u7a0b\u7684\u5f00\u53d1\uff0c\u5e0c\u671b\u8d77\u5230\u629b\u7816\u5f15\u7389\u7684\u4f5c\u7528\uff0c\u4f7f\u66f4\u591a\u5f00\u53d1\u4eba\u5458\u5bf9 Bluemix \u548c Watson \u670d\u52a1\u4ea7\u751f\u5174\u8da3\uff0c\u5e76\u8fd0\u7528\u5b83\u4eec\u5f00\u53d1\u51fa\u66f4\u52a0\u5bcc\u6709\u521b\u65b0\u6027\u7684\u5e94\u7528\u3002<\/p><\/div>","pwapp_post_content_type":"postprocessed","pwapp_preview_type":"excerpt","androapp_failover_post_content_type":"","share_text":"IBM Watson Speech to Text\nvia http:\/\/tech.memoecho.com\/zh\/ai\/%e4%b8%ad%e6%96%87-ibm-watson-speech-to-text\/","supercache":"androappsupercache","_links":{"self":[{"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/posts\/685"}],"collection":[{"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/comments?post=685"}],"version-history":[{"count":1,"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/posts\/685\/revisions"}],"predecessor-version":[{"id":686,"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/posts\/685\/revisions\/686"}],"wp:attachment":[{"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/media?parent=685"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/categories?post=685"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/tech.memoecho.com\/zh\/wp-json\/wp\/v2\/tags?post=685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}