IBM Watson の 音声認識

Twilio for KDDI を使った留守番電話を作る過程で、音声ファイルからテキストを起こす(音声認識)処理があって、そこで IBM Watson API Speech to Text を使うことにした。コマンドラインからcurlで呼び出す方法は検索すればいろいろと出て来るんだけど、php_curlで動かすのに苦労しました。php用の関数を作ったのでGithubに公開しました。

<?php
//
//  IBM Watson API Speech to Text
//

define("WTS_BASE_URL",    "https://stream.watsonplatform.net");
define("WTS_SERVICE",     "/speech-to-text");
define("WTS_VERSION",     "/api/v1/recognize");
define("WTS_NARROW_BAND", "ja-JP_NarrowbandModel");
define("WTS_BROAD_BAND",  "ja-JP_BroadbandModel");
define("WTS_REQUEST_URL", WTS_BASE_URL.WTS_SERVICE.WTS_VERSION."?model=".WTS_NARROW_BAND);

function Speech_to_Text($user, $pass, $audioFile, $audioType) {
    $size = filesize($audioFile);
    $data = file_get_contents($audioFile);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, WTS_REQUEST_URL);
    curl_setopt($ch, CURLOPT_USERPWD, "$user:$pass");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Content-Type: $audioType",
        "Transfer-Encoding: chunked"
    ));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_INFILESIZE, $size);
    $json = @curl_exec($ch);
    return $json;
}
?>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください