使ってみよう! Windows Live SDK/API

第38回 使ってみようMicrosoft Translator

この記事を読むのに必要な時間:およそ 5 分

言語の検出

テキストからその言語の検出も可能です。その場合は,Detectメソッドを使います。これを利用すれば,ユーザーは元の言語を指定せずに翻訳先の言語だけを指定するだけで翻訳機能が使えるようになります。


$(function () {
    $.ajax({
        type: "GET",
        url: "http://api.microsofttranslator.com/V2/Ajax.svc/Detect",
        dataType: "jsonp",
        data: {
            appId: appId,
            text: "こんにちは"
        },
        jsonp: "oncomplete",
        success: function (data, dataType) {
            alert(data);
        }
    });
});

Detectメソッドのパラメーターは,AppIDと検出対象のテキスト(textパラメータ)です。戻り値は言語コードです。

一括処理

以上までが前バージョンにもある機能でした。新しいMicrosoft Translator V2では,複数の文章に対して一度に翻訳や言語の検出も可能です。その場合,TranslateArrayDetectArrayメソッドを使用します。また文章をセンテンスに分割するBreakSentencesメソッドも用意されています。これらについては本記事で紹介しませんので,詳しくはMSDN Libraryを参照してください。

Text-to-Speech

次はText-to-Speech機能です。Text-to-Speechとはテキストを人工的に合成した音声で読み上げてくれるものです。Microsoft Translator V2から指定したテキストのWave形式のストリームデータを取得できます。

さっそく使ってみましょう。Text-to-SpeechにはSpeakメソッドを使います。Speakメソッドのパラメーターは次の通りです。

パラメーター名 説明
appId AppID
text 読み上げるテキスト
language テキストの言語コード
format ストリームデータのContent-type(現在はaudio/wavのみサポートで省略可能)

戻り値は,ストリームデータのURLです。JavaScriptからは次のように使えます。<embed>要素をページ内に追加して音声を再生するようにしています。Internet Explorerでの実行結果は図5のようになります。


$(function () {
    $.ajax({
        type: "GET",
        url: "http://api.microsofttranslator.com/V2/Ajax.svc/Speak",
        dataType: "jsonp",
        data: {
            appId: appId,
            text: "Hello, world!",
            language: "en",
            format: "audio/wav"
        },
        jsonp: "oncomplete",
        success: function (data, dataType) {
            $("body").append(
            $("<embed>").attr("src", data).attr("autostart", true));
        }
    });
});

図5 Text-to-Speechサンプルの実行結果

図5 Text-to-Speechサンプルの実行結果

残念ながら現在は日本語の読み上げには対応していません。サポートしている言語はGetLanguagesForSpeakメソッドで取得できます。使い方は,GetLanguagesForTranslateメソッドと同じです。

Collaborative Translations

次はCollaborative Translations機能を使ってみましょう。Collaborative Translationsは,既に述べたとおり,人手による翻訳情報を与えることで翻訳精度を向上させるものです。翻訳前のテキストと人手による翻訳後のテキストを登録することでAPI呼出し時にその情報を利用できます。翻訳したテキストはMicrosoftのデータベース上にAppIDに関連付いて保存されます。

人手による翻訳は誰によって翻訳されたかが重要になってきます。Webサイトオーナーや信頼できるユーザーとWebサイトを訪れた匿名ユーザーでは翻訳の質や価値が異なります。この点については数値による評価(重み付け)ができ,API呼出し時にどの翻訳結果を採用するか判断する必要があります。

翻訳の登録

翻訳情報の登録はAddTranslationメソッドを使います。パラメーターは次の通りです。戻り値はありません。

パラメーター名 説明
appId AppID
originalText 翻訳前のテキスト(1000文字まで)
translatedText 翻訳後のテキスト(1000文字まで)
from 翻訳前の言語コード
To 翻訳後の言語コード
rating 翻訳の質を表す値 -1から10の整数(省略時は1)
contentType テキストのContent-type(text/plainまたはtext/html 省略時はtext/plain)
category 翻訳のカテゴリー(省略時はgeneral)
user ユーザー名(文字列)
uri 翻訳の場所(省略可能)

categoryとuriパラメーターは,同じテキストでも文章のジャンルによって異なる翻訳になるような場合に,付加情報として利用するために用意されていると思われます。ratingは,-1から10の整数で翻訳の質を表しています。機械翻訳の場合ratingは5です。Webサイトオーナーや権限のあるユーザーによる翻訳は6以上,匿名ユーザーによるものは5未満となるように使いわけます。userは翻訳者が誰であるかを追跡するために使用します。

JavaScriptのコードは例えば次のようになります。


$(function () {
    $.ajax({
        type: "GET",
        url: "http://api.microsofttranslator.com/V2/Ajax.svc/AddTranslation",
        dataType: "jsonp",
        data: {
            appId: appId,
            originalText: "where do you eat a choco-coronet from?",
            translatedText: "チョココロネってどっちから食べる?",
            from: "en",
            to: "ja",
            rating: 6,
            user: "owner"
        },
        jsonp: "oncomplete",
        success: function (data, dataType) {
            // do nothing
        }
    });
});

登録後,originalTextに指定したテキストをTranslateメソッドで翻訳するとtranslatedTextに指定したテキストが翻訳結果として得られることがわかると思います。これはratingに6を指定していたため,機械翻訳の結果よりも登録された翻訳のほうがよいと判断されたためです。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp