戻る

ミク語変換API

何ができるの?

URL形式で歌詞を送信すると、変換後の歌詞データをXML形式で返します。 これによりブラウザや特別なライブラリを使用しなくても、自作プログラムにミク語変換の機能を組み込むことが可能になります。

リクエストURL

http://aikelab.net/mikugo/api.cgi

リクエストパラメータ

パラメータ必須省略時説明
sentence-変換対象のテキストデータ
chouonY長音の表記を母音に変換する(Y/N)
bunsetsuN文節を区切る(Y/N)
hiraganaNひらがな変換(Y/N)
romajiNローマ字変換(Y/N)
encodingUTF-8出力の文字コード(SHIFT_JIS / EUC-JP / UTF-8)
bilingualN日本語と英語で別トラック用に分けて出力する(Y/N)
typexml出力タイプを指定する(xml/jsonp)
callbackcallback出力タイプがjsonpのときコールバック名を指定する

簡単なサンプル

送信URL

http://aikelab.net/mikugo/api.cgi?chouon=Y&bunsetsu=Y&encoding=UTF-8&sentence=%E6%AD%8C
%E8%A9%9E%E3%82%92%0A%E9%80%81%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B

受信XML

<?xml version="1.0" encoding="UTF-8" ?>
<result>
かしお
おくうて みる
</result>

サンプルプログラム

Ruby言語によるプログラム例

#!/usr/bin/ruby
require 'cgi'
require 'open-uri'
require 'kconv'

sentense =
  "こんな感じに\n" +
  "歌詞を書いて\n" +
  "改行も含めて\n" +
  "URLエンコードします\n" 

convert_chouon    = 'N'     # 長音(ー)を母音に変換 (Y/N)
separate_bunsetsu = 'Y'     # 文節を区切る (Y/N)
romaji            = 'N'     # ローマ字変換 (Y/N)
encoding          = 'UTF-8' # 出力の文字コード (SHIFT_JIS / EUC-JP / UTF-8)

# 入力文字列をURLエンコード
esc_str = CGI.escape(Kconv.toutf8(sentense))

# リクエストURLの生成
url = "http://aikelab.net/mikugo/api.cgi?" +
  "chouon=" + convert_chouon + "&" +
  "bunsetsu=" + separate_bunsetsu + "&" +
  "encoding=" + encoding + "&" +
  "sentence=" + esc_str

# URLの画面表示
print url + "\n\n"

# リクエスト送信、レスポンス受信、表示
open(url) {|s|
  s.each{|line|
    print line
  }
}

実行結果

home$ ruby apitest.rb
http://aikelab.net/mikugo/api.cgi?chouon=N&bunsetsu=Y&encoding=UTF-8&sentence=%E3%81%93%E3
%82%93%E3%81%AA%E6%84%9F%E3%81%98%E3%81%AB%0A%E6%AD%8C%E8%A9%9E%E3%
82%92%E6%9B%B8%E3%81%84%E3%81%A6%0A%E6%94%B9%E8%A1%8C%E3%82%82%E5%9
0%AB%E3%82%81%E3%81%A6%0AURL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3
%83%89%E3%81%97%E3%81%BE%E3%81%99%0A

<?xml version="1.0" encoding="UTF-8" ?>
<result>
こんなかんじに
かしお かいて
かいぎょーも ふくめて
ユーアールエルエンコードします
</result>
home$ 

JavaScriptによるプログラム例

JavaScriptからクロスドメインで利用できるようJSONP形式に対応しました。
type=で出力タイプをjsonpとし、callback=でコールバック関数名を指定します。
ここに結果が表示されます。
<div id="area"></div>

<script type="text/javascript">
  var showresult = function(json) {
    document.getElementById("area").innerText = json.result;
  }
  var s = "別のサーバに置かれたスクリプトからでも使えます"

  var elm = document.createElement("script");
  elm.src = "http://aikelab.net/mikugo/api.cgi?"
          + "chouon=Y&bunsetsu=Y&encoding=UTF-8&"
          + "sentence=" + s
          + "&type=jsonp&callback=showresult";
  document.body.appendChild(elm);
</script>

API利用事例

ATOKから利用

ATOKダイレクトプラグインでミク語変換
ATOK2008からミク語変換を利用するプラグインです(mashpodさん作)。 Perl言語からAPIアクセスの参考にもなると思います。

Ubiquityから利用

FirefoxのプラグインUbiquityの場合、command-editorに以下のプログラムをペーストすることでAPIが利用できます。
文字列を選択してCtrl-Space → mikugo [enter]で選択した文字列が直接ミク語変換されるようになります。
CmdUtils.CreateCommand({
  name: "mikugo",
  takes: {"lyrics": noun_arb_text},
  preview: function(pblock, lyrics) {
    pblock.innerHTML = "ミク語変換: " + lyrics.text;
  },
  execute: function(lyrics) {
    var $ = jQuery;
    var url = "http://aikelab.net/mikugo/api.cgi?chouon=Y&bunsetsu=Y&sentence="
    var txt = lyrics.html.replace("<br>", "[br]", "ig").replace(/<[^>]+>/g, "");
    url = url + encodeURI(txt);
    $.get(url, function(response) {
      var res = $("result", response).text();
      res = res.replace("[br]", "<br>", "g");
      CmdUtils.setSelection(res);
    }, "xml");
  }
})
戻る