2011年6月25日土曜日

[VOCALOID] VOCALOID2に英語の歌詞を流し込む(打ち込む)

How to fit english words to VOLCAOID2

巡音ルカを使って
This is a pen. I am a boy.
をドレミファソラシドの音階に合わせて歌わせてみます。

まずは日本語で歌わせます。深く考えずに歌いやすいように歌詞を音階にのせてみました。

(ド)ディス (レ)イズ (ミ)ア (ファ)ペン (ソ)アイ (ラ)アム (シ)ア (ド)ボーイ

日本語は1音1ノートなのでドレファソラドにはそれぞれ2音ずつ、レミシには2音ずつノートを書きます。
ノートと歌詞を入力した結果です。
実際に聞いてみると「ディス」の「ス」の発音が不自然だったので少しスペースを入れてます。いわゆる調教です。(もっと離してもいいかも)

次に英語の歌詞の入力です。
最大の問題は「英語の音節がどこで区切れるのかわからない」ということです。(わかる人もいるでしょうけど)
辞書を引けばすぐにわかりますが、手間をかけたくありません。
そこで考えたのが次の方法です。
まず、小さいノート(8分音符)をたくさん書きます。

次に、先頭のノートを選択して歌詞の流し込みをします。

歌詞が流し込まれた結果を見て、ノートを手動で調整します。余った小さいノートは消します。
「This is a pen. I am a boy.」はすべて1単語1音節でした。
実際に再生してみると「pen. I」が「ペン-ナイ」に、「am a」が「ア-マ」と発音して英語らしく聞こえます。


英語の歌詞をどう分割されるのか?
マニュアル30ページ以降に、英語の歌詞は1音節(1母音)を1ノートに入力するように書かれています。
「only」の発音は「o'unli」で母音が3つですが、実際に歌詞を流し込むと2ノートに分割されます。
VOCALOID Editorは辞書を内蔵していて、その内容に基づいて分割してくれます。

VOCALOIDの内蔵辞書にない単語は分割されません。「Floccinaucinihilipilification」という単語を流し込んでみましたが分割されませんでした。
辞書にない単語はマニュアルの音声記号一覧表を見ながら発音記号のシンボルを入力することになります。

Shuffle!VではVOCALOIDをしゃべらせてるのですが、この通り音節の区切りが難しく英語版VOCALOIDは歌詞の入力に苦労しました。
英語の音節の区切りは歌詞の流し込みによって自動分割に任せました。

ボーカロイドが音声案内するAndroidアプリを公開中です!
ストレッチを支援する Eye元気!2
カードの絵合わせゲーム Shuffle!V

以上、参考になれば幸いです。

2011年6月22日水曜日

mopitaマーケット

MtkのAndroidアプリがmopitaマーケットに掲載されました。

・slコマンド for Android
https://market.mopita.com/detail/?product_id=80000423

・Eye元気!
https://market.mopita.com/detail/?product_id=80001117

・Wi-Fi sync Screen
https://market.mopita.com/detail/?product_id=80001562

関係者の皆様にお礼申し上げます。

2011年6月18日土曜日

[Android] OpenGLでシャープ製端末用3D(立体視)アプリケーションを作る

How to create 3-dimensional Applications on OpenGL

[Android] 3Dアプリケーションの作り方 でSH Developers Squareの3D(立体視)用ライブラリーのインストールについて書きました。
このライブラリーを使って立体視可能なOpenGLアプリケーションを作ってみました。

※画像はイメージです

立体視アプリを作るためにはサイドバイサイド画像を表示します。
サイドバイサイド画像とは、左半分に左目からの視線に映る映像を、右半分に右目からの視線に映る映像を並べた画像です。左右の画像それぞれ横の解像度を半分に縮小します。
サイドバイサイド画像のサンプルです。左右とも同じCGですが少しだけ視点を変えてます。

この画像はピアプロ・キャラクター・ライセンスに基づいてクリプトン・フューチャー・メディア株式会社のキャラクター「鏡音リン」「鏡音レン」を描いたものです。

3D用ライブラリーは自動的に左右の画像を1ドットずつ交互に並べ替えて視差バリアで左目と右目にそれぞれに映像を見せる処理をしてくれます。

立体視アプリを作るに当たり、次の手順は完了しているものとします。
  1. SH Develpoers Squareにユーザー登録しライブラリーをダウンロードする
  2. ライブラリーをAndroid SDKのadd-onsフォルダーに解凍する
  3. EclipseでAndroidプロジェクトを新規作成し、Build targetの「Sharp_addon」を選択する(Build targetは2.1以上ならどれでもOK)
OpenGLでサイドバイサイド画像を表示するには、1フレームごとに画面の左半分に左目の視線の映像を描画した後、右半分に右目の視線の映像を描画します。
今回のサンプルはGoogle codeのソースを参考に立体視アプリ用にアレンジしました。キューブが回転しながら前後左右に動きます。

マニフェスト(AndroidManifest.xml)
Activity(Main.java)

res/values/string.xmlは自動生成された内容を使ってます。
レイアウト用xmlは使用しません。

画面をタップするたびに3Dと2Dが切り替わります。
画面の向きは横に固定していますが、縦向きでも立体視できます。
立体感を演出するポイントはonDrawFrameメソッドの「(1)左の描画」「(2)右の描画」のGLU.gluLookAtによる視点の位置と向きです。
左右の視差を大きくすれば立体感も増えますが、大きくしすぎると映像が乱れて見えます。
このサンプルでは視点の位置は固定ですが、視点が移動するアプリでも右の描画の時だけ視点のX座標の位置と向きを変えるだけです。
ライブラリーのおかげで簡単に立体視化できますし、既存のOpenGLアプリの立体視化も簡単にできそうです。
立体視アプリケーションの開発コストはほとんど変わらないと思います。
ただし、横方向の実質的な解像度が半分になる、描画処理が2倍に増えるなどのデメリットがあります。仕様によってはパフォーマンス向上のため、やむなくポリゴンを減らす必要があるかもしれません。
サイドバイサイド方式は、どれだけフレームレートの低い端末でもちゃんとステレオ表示できるのが強みです。

立体視アプリ実行中のスクリーンショットはこんな画像です。
ポリゴンはサイドバイサイドで表示されてますが、タスクバーが1ドットごとにシャッフルされてます。
3Dテレビやニンテンドー3DSなど立体視のコンテンツが増えているので知っていて損はない技術だと思います。

キーワード
side by side image GLSurfaceView Renderer jp.co.sharp.android.stereo3dlcd.SurfaceController LYNX3D SH-30C GALAPAGOS SoftBank 003SH 005SH AQUOS PHONE 006SH SH-12C

以上、参考になれば幸いです。

2011年6月11日土曜日

[VOCALOID] ボーカロイドのトラブルシューティング

Troubleshooting problems with VOCALOID2

Eye元気!ではVOCALOIDをしゃべらせてます。VOCALOID2を使うに当たって直面したトラブルと対処方法などを書きます。

1.「合成エンジンを開けません!」
2.DAW(デジタル・オーディオ・ワークステーション)でVOCALOID MIDIを取り込んで再生するとテンポが合わない
3.VOCALOID MIDIのトラッだけ発音が遅い
4.VOCALOIDの声が小さい
5.MACでVOCALOIDを使いたい

1.「合成エンジンを開けません!」
VOCALOID2 初音ミクをインストール

VOCALOID 2.0.12アップデータをインストール

VOCALOID2 鏡音リンレンACT2をインストール

の順でWindows7にインストールするとVOCALOID2起動時にこのエラーが発生して起動しなくなります。
今まで使えていたVOCALOID2初音ミクまで使えなくなってしまう酷いトラブルです。
解決方法はDSE2.dllを自分で削除してVOCALOID2 鏡音リンレンACT2をインストールし直すことです。
DSE2.dllは64bit-Windowsなら
C:\Program Files (x86)\VOCALOID2
32bit-Windowsなら
C:\Program Files\VOCALOID2
にあります。
リンレンACT2のVOCALOIDは 2.0.6と古いので、もう一度VOCALOID 2.0.12アップデータをインストールしようとしたら、今度はVOCALOID 2.0.12アップデータのインストールがいつまでたっても進みません
Windowsをセーフモードで起動したらVOCALOID 2.0.12アップデータのインストールができました。
Windows7のシャドーコピーや復元ポイントの機能が影響してるようです。
クリプトンのサポートページ(http://www.crypton.co.jp/mp/do/support/faq?id=360、要ログイン)にそれっぽいことが書かれてますが、DSE2.dllを削除することやセーフモードについては触れられていません。

2.DAWでVOCALOID MIDIを取り込んで再生するとテンポが合わない
VOCALOID Editorにテンポを設定せずに書き出したVOCALOID MIDIファイルを、DAWのVLOCALOID2 VSTトラックで再生するとVOCALOID2トラックが遅くなっていくことがありました。
VOCALOID Editorの1小節目にDAWのプロジェクトと同じテンポを設定してからVOCALOID MIDIに書き出せばテンポが合うようになりました。

3.VOCALOID MIDIのトラックだけ発音が遅い・タイミングがあわない
PCのスペックが低いと起こる症状みたいです。VOCALOID MIDIトラックだけタイミングをずらせばいいのですが微調整が難しいです。
対策方法は
●VOCALOID MIDIトラックをDAWの機能でオーディオトラックに変換してオーディオデータを編集してタイミングを合わせる
●VOCALOID EditorでWAVEファイルに書き出してオーディオデータを扱う
→VOCALOIDをスタンドアローンで使用するのでリアルタイムにDAWのエフェクターをかけられない
●Rewireを使う
→32bitのDAWのみ可能、しかもrewire.dllのインストールが別途必要。
●VST realtimeを使う
→VOCALOID Editorと操作方法が異なる、特に歌詞を合わせることが難しい
などがあります。どの方法もデメリットが大きいです。

4.VOCALOIDの声が小さい
DAW側で音量を持ち上げる処理をしました。
●Make up Gainの調整が可能なダイナミクス系のエフェクトを通す(Maximizer、Compresserなど)
●Waveファイルに書き出してオーディオ編集用フリーウェア「Sound Engine Free」で正規化する
など

5.MACでVOCALOIDを使いたい
VOCALOIDシリーズは今のところWindows専用です。
VOCALOID Editorから書き出したWaveファイルはMACのGarageBandなどで扱えます。
MacOSでVOCALOID Editorは使えませんが、Intel MACならWindowsとのデュアルブート構成にすれば、WindowsでVOCALOID Editorを使うことができます。
Waveファイルに書き出すだけならスペックの低いPCでも可能ですが、VOCALOID Editorを快適に編集するには2GHz以上かつ2コア以上のCPUが必要だと思います。
シングルコア 1.7GHz~2.7GHzのCPUではVOCALOID Editor再生中にノイズが入ることがありました。
VOCALOIDのためにWindowsを仮想OSとして動かしたり、安いだけのWindowsネットブックを買うくらいならIntel MACをデュアルブートで使う方が快適だと思います。


インストールからDAWとの連携まで操作が難しいVOCALOIDですが、MIDIキーボードで歌わせると楽しいです。
手間をかけてインストールした甲斐があります。
試行錯誤の結果、VOCALOID Editorを単体で使わず打ち込みを編集するときはDAWとRewireで、MIDIキーボードで歌わせるときはDAWのVOCALOID VSTで動作させてます。
VOCALOID3はEditorの機能が強化されるようなので、単体でも使いやすくなりそうです。

以上、参考になれば幸いです。

2011年6月4日土曜日

[Android] SoundPoolのオーディオ再生ミスをなくす

How to avoid failing to play audio-files.

AndroidのSoundPoolはロードしたオーディオファイルをすぐに再生できません。
ロードしたオーディオのデコード処理に時間がかかるためです。

Android 2.2以降はsetOnLoadCompleteListenerでロードが完了したことを知ることができます。
ここではAndroid 2.1以前を想定してsetOnLoadCompleteListenerを使わずに対策します。

起動したら音を鳴らすだけのアプリケーションを作ってみます。
※プロジェクトのresフォルダー配下にrawフォルダーにオーディオファイル「sample_sound.ogg」が保存されているものとします。
※パーミッションは設定不要のためマニフェストは省略します。レイアウト用xmlも使いません。

まずは音が鳴らない例です。
SoundPool#loadの直後にSoundPool#playで音を鳴らしたくても、どれだけ高速な端末でもデコードが間に合わないので音は鳴らないでしょう。

SoundPoolのリファレンスを見るとplayメソッドはオーディオの再生に失敗するとゼロを返すとされています。
実験したところ、デコード中は再生に失敗するのでゼロが返ってきました。
つまりゼロ以外の数値が返ってくるまでplayメソッドを繰り返し実行すればデコードが終わったことがわかります。
playメソッドをボリュームゼロで実行し、ゼロ以外が返るまで繰り返せば確実に音を鳴らすことができます。

再生テスト追加後のソースです。
これで確実に音声が再生されるようになりました。

今回のサンプルはロードしたらすぐに再生する仕様にしました。
実際のアプリケーションでは早いタイミングで複数のオーディオファイルをロードして、任意のタイミングで再生することが多いと思います。
Eye元気!はロードした直後にオーディオの再生テストをしています。
サウンドテストに時間がかかりすぎると「Application Not Responding」(ANR)の警告が出るので、サイズが大きいオーディオは要注意です。

以上、参考になれば幸いです。