このブログは気が向いたときにしか更新しません。
生存確認等はtwitterでどうぞw

2010年1月7日木曜日

Sinsy用のMusicXML

新しい歌声合成システムのSinsyは現在MusicXML形式のデータから音声を合成してくれるようです。 で、そのMusicXMLはどんなものならOKなのか公式のサンプルを弄って簡単に調べてみました。

大雑把に調べた感じだとMusicXMLは基本的に楽譜用の形式みたいで、公式サンプルを見ると印刷用のパラメータと思われるものがたくさんありました。 なので、まずはそれらをどんどん削ってSinsyが文句を言わない最小サンプル(?)を作ってみました。

measure/attributeのdivisionで基準音長、time/beats, beat-typeで拍子を設定し、 measure/direction/sound#tempoでテンポを設定。テンポは最後に指定されたものが曲全体のテンポになるようです。よって、途中で100から120に変えようと思ってsound#tempoを挿入しても曲全体のテンポが120になってしまいます。
基準音長n個分の休符は <note><rest/><duration>n</duration></note>、
音長nの音符C#4で歌詞「あ」は <note><pitch> <step>C<step> <alter>1</alter> <octave>4</octave> </pitch> <duration>n</duration>
<lyric><text>あ</text></lyric></note> とすれば良いようです。半音の上げ下げがない場合はalterは不要。

半音上げに関してはちょっと混乱があったので動作テストのxmlを書いて確認してみました。
最初の2個のC#は<alter>1</alter>、 あとのC#は<accidental>sharp</accidental>で記述しましたが、 有効なのはalterのほうだけでした。


実際にはもう少し削れるようです。楽譜としてのMusicXMLとしては明らかに拙いと思われますが、律儀に小節ごとにmeasure要素を作る必要はなく、全部の音符を1つのmeasure要素に入れてしまってもSinsyは全く問題なく処理してくれましたw

注: 音を出すだけなら小節分解は必要ないみたいですが、きちんと歌わせるためにはちゃんと小節に分ける必要があるようです。
Sinsyの学習データはきちんと小節に分けたMusicXMLなので、分けられていない場合は学習結果が利用できなくなってうまく歌えないということのようです。


なお、Cadencii 3.1.0のアルファ版がMusicXMLの書き出しに対応しています。twitter log


もうこのxmlは必要ないと思うので消しました。2010/05/25

0 コメント:

コメントを投稿