LoginSignup
15
18

More than 5 years have passed since last update.

Speech To Text で音声認識してみた

Last updated at Posted at 2017-08-24

1. はじめに

Speech To TextはIBM Bluemixから提供されている音声認識APIです。
このAPIを使用することで、音声から文字を書き起こすことができます。

今回は、Speech To TextとNode.jsを使用して、簡単な音声認識システムの開発を行います。

2. 準備

開発の前に、以下のものを準備してください。

  • Bluemixのアカウント

Speech To Textを利用するには、Bluemixのアカウントが必要になります。
アカウント作成は、以下のリンク先で行います。

Bluemix ログインページ
https://console.bluemix.net/

  • Node.js開発環境

公式サイトからNode.jsをダウンロード・インストールしてください。

Node.js 公式サイト
https://nodejs.org/en/

  • 音声ファイル

音声認識に使用する音声ファイルを準備してください。
今回は、wav形式の音声ファイルを使用します。

3. 開発

3-1. Speech To Textサービス追加

Speech To Textサービス利用するため、Bluemix上でサービスを追加します。
また、後ほど"username"と"password"の資格情報が必要になりますので、それらの情報を確認します。

手順は以下の通りです。

① カタログでSpeech To Textを検索し、サービスを作成する

Qiita2.png

② ダッシュボードのサービス欄にて、Speech To Textをクリックし、サービスの詳細画面を開く

Qiita3.png

③ サービス資格情報を開き、"username"と"password"を確認する

Qiita1.png

3-2. Node.jsによるコーディング

Speech To Textを使用して、簡単な音声認識ツールを作成します。
このツールでは、音声ファイルを読み込み、認識結果をコンソールに表示するようにします。

・開発用ディレクトリの作成

開発用のディレクトリを作成します。
以下の作業は、主にこのディレクトリ配下で行います。

・npmパッケージ導入

必要なnpmパッケージをインストールします。
今回は、以下の2つのパッケージを使用します。

パッケージ 説明
watson-developer-cloud Watson Developer Cloudサービスが使用できる
fs ファイルの読み書きや操作ができる

以下のコマンドでパッケージをインストールします。

> npm install パッケージ

インストールしたモジュールを使用するには、require()でモジュールを読み込みます。

var fs = require('fs');
const watson = require('watson-developer-cloud');

・認証

Speech To Textを使用するには、サービス資格情報に提供されているユーザー名とパスワードを入力して認証を行います。
ここでは、先程サービスの作成にて確認した、ユーザー名とパスワードを指定します。
※Bluemixアカウントのユーザー名とパスワードとは異なります。

var SpeechToTextV1 = require('watson-developer-cloud/speech-to-text/v1');
var speech_to_text = new SpeechToTextV1({
    username: 'ユーザー名',
    password: 'パスワード'
});

・パラメータ設定

パラメーターを設定します。
今回は、以下の3つの項目を設定します。

設定パラメータ 説明
model 音声認識に使用されるモデル

英語(US)のブロード・バンドモデル(en-US_BroadbandModel)がデフォルト.
日本語のモデルは、ja-JP_BroadbandModel と ja-JP_NarrowbandModelが使用可能.

【使用可能な言語】
英語 (US)、英語 (UK)、日本語、アラビア語 (MSA、ブロードバンド・モデルのみ)、北京語、ポルトガル語 (ブラジル)、スペイン語、フランス語 (ブロードバンド・モデルのみ)
audio 音声ファイル
content_type 音声データのMIMEタイプ

以下のタイプが使用可能.
・audio/flac 
・audio/mp3 
・audio/mpeg
・audio/l16 
・audio/wav 
・audio/ogg 
・audio/ogg;codecs=opus 
・audio/ogg;codecs=vorbis 
・audio/webm 
・audio/webm;codecs=opus 
・audio/webm;codecs=vorbis 
・audio/mulawv
・audio/basic

上記以外にも、パラメータが存在します。
パラメータについて、詳細はSpeech To TextのAPIリファレンスをご参照ください。

Speech To Text APIリファレンス
https://www.ibm.com/watson/developercloud/speech-to-text/api/v1/

ソースコード上では 以下のようにしてパラメータの設定をします。

var params = {
    model: '音声認識モデル',
    audio: fs.createReadStream('音声ファイル名'),
    content_type: '音声ファイルのタイプ',
};

・音声認識

設定したパラメータを用いて、音声認識を実行します。
今回、音声認識結果は、コンソール上に表示されるようにしています。

speech_to_text.recognize(params, function (error, transcript) {
    if (error)
        console.log('Error:', error);
    else
        console.log(JSON.stringify(transcript, null, 2));
});

ソースコード例

作成したコード(test.js)が以下の通りになります。

test.js
var fs = require('fs');
const watson = require('watson-developer-cloud');

var SpeechToTextV1 = require('watson-developer-cloud/speech-to-text/v1');
var speech_to_text = new SpeechToTextV1({
    username: 'ユーザー名',
    password: 'パスワード'
});

var params = {
    model: 'ja-JP_BroadbandModel', // 日本語-ブロードバンドを使用
    audio: fs.createReadStream('./wav/sample.wav'), // 音声ファイル./wav/sample.wavを音声認識する
    content_type: 'audio/wav' //wavファイルを使用
};

speech_to_text.recognize(params, function (error, transcript) {
    if (error)
        console.log('Error:', error);
    else
        console.log(JSON.stringify(transcript, null, 2));
});

4. 実行

コンソール画面から、test.jsを実行します。
test.jsのあるディレクトリに移動し、以下のコマンドを実行してください。

> node test.js

しばらく待つと、コンソール画面に音声認識結果が表示されます。

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.461,
          “transcript”: “こんにちは 今日 は 良い天気 です ね "
        }
      ],
      "final": true
    }
  ],
  "result_index": 0
}

"transcript"に読み込ませた音声から書き起こしたスクリプトが表示されます。
また、"confidence"には"transcript"の信頼度が0~1の間の数値で示されます。

参考

Speech to Text Demo
https://speech-to-text-demo.mybluemix.net/

Speech To Text APIリファレンス
https://www.ibm.com/watson/developercloud/speech-to-text/api/v1/

15
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
18