[Node.JS] IBM Watson 的 Speech To Text 語音轉文字服務

本文章將展示由後端推送語音給 IBM Watson,並透過 Speech To Text 的服務將語音轉換為文字後回傳。

IBM Watson 部分

第一步

第二步

  • 登入 IBM Bluemix。 Imgur

第三步

  • 點擊上方型錄。 Imgur

第四步

  • 選取左方的 Watson。 Imgur

第五步

  • 點擊右邊的 Speech to Text 服務。 Imgur

第六步

  • 點擊建立服務。 Imgur

第七步

  • 建立 Speech to Text 服務完成的畫面。 Imgur

第八步

  • 服務認證畫面。稍後會使用到 password 與 username 的部份。 Imgur

Node 部分

第一步

  • 請依下列指令安裝 watson-developer-cloud 套件。
npm i watson-developer-cloud  

第二步

  • 請填入帳號密碼及語音檔之路徑,並執行此程式碼。
var SpeechToTextV1 = require('watson-developer-cloud/speech-to-text/v1');  
var fs = require('fs');

var speech_to_text = new SpeechToTextV1({  
  username: '<username>',
  password: '<password>',
  version: 'v1'
});

var params = {  
  content_type: 'audio/wav',
  continuous: true,
  interim_results: true
};

// Create the stream.
var recognizeStream = speech_to_text.createRecognizeStream(params);

// Pipe in the audio.
fs.createReadStream('speech.wav').pipe(recognizeStream);

// Pipe out the transcription to a file.
recognizeStream.pipe(fs.createWriteStream('transcription.txt'));

// Get strings instead of buffers from 'data' events.
recognizeStream.setEncoding('utf8');

// Listen for events.
recognizeStream.on('data', function(event) { onEvent('Data:', event); });  
recognizeStream.on('results', function(event) { onEvent('Results:', event); });  
recognizeStream.on('error', function(event) { onEvent('Error:', event); });  
recognizeStream.on('close-connection', function(event) { onEvent('Close:', event); });

// Displays events on the console.
function onEvent(name, event) {  
    console.log(name, JSON.stringify(event, null, 2));
};

第三步

  • 執行成功時,會顯示過程中所有監測到的事件訊息(含結果),並產生一個 transcription.txt 文件(內容為輸出的結果)。
  • 若無需輸出成文字檔,請註拿掉 transcription to a file 該部分程式碼。
  • 若只想監測輸出結果,請保留 data 事件即可。

版本資訊

  • Node.JS v4.3.0
  • Windows 7 64-bit

參考資料

ALL RIGHTS RESERVED. COPYRIGHT © 2016. Designed and Coded by Makee.io