VOCALOID2, 3 の推奨音域

新記事あります→VOCALOID2, 3 の推奨音域 - つちのこ、のこのこ。(はてな番外地)



インターネット VOCALOID 3 CULVOCALOID3 Library Mew
VOCALOID2 の推奨声域 - つちのこ、のこのこ。(はてな番外地)』に書いたものからいろいろと追加されたので、改めて記事にします。

VOCALOID2 推奨音域とテンポ
名前 音域(幅), テンポ(幅)
(バス) D1-F3(28), ---( - )
VY2 A1-E3(20), 70-140( 71)
がくっぽいどWHISPER A1-G3(23), 60-150( 91)
氷山キヨテル C2-G3(20), 60-160(101)
がくっぽいど/NATIVE/POWER A1-C4(28), 60-150( 91)
(テノール) C2-C4(25), ---( - )
ガチャッポイド F2-A3(17), 90-150( 61)
Lily D2-D4(25), 90-180( 91)
歌愛ユキ F2-C4(20), 50-150(101)
結月ゆかり D2-F4(28), 60-120( 61)
鏡音レン serious A2-C4(16), 55-155(101)
VY1/VY1V3 F2-E4(24), 60-175(116)
CUL F2-E4(24), 40-200(161)
V3 Lily D2-G4(30), 90-180( 91)
V3 Megpoid F2-F4(25), 60-175(116)
鏡音レン power A2-D4(18), 65-170(106)
鏡音レン cold B2-C4(14), 60-160(101)
SF-A2 開発コード miki E2-G4(28), 70-170(101)
猫村いろは E2-G4(28), 70-170(101)
V2 Megpoid, Native F2-A4(29), 60-175(116)
Mew G2-G4(25), 65-150( 86)
兎眠りおん A2-F4(21), 60-140( 81)
蒼姫ラピス A2-F4(21), 70-200(131)
(アルト) F2-B4(31), ---( - )
IA B2-A4(23), 63-228(166)
歌手音ピコ C3-B4(24), 70-150( 81)
SeeU C3-C5(25), 60-170(111)
初音ミク Dark D3-B4(22), 60-145( 86)
初音ミク Solid D3-C5(23), 65-160( 96)
鏡音レン D3-C♯5(24), 70-160( 91)
鏡音リン power F3-B4(19), 65-170(106)
鏡音リン warm F3-B4(19), 60-160(101)
巡音ルカ D3-D5(25), 65-145( 81)
(ソプラノ) C3-E5(29), ---( - )
初音ミク Sweet F3-D5(22), 55-155(101)
鏡音リン F♯3-C♯5(20), 85-175( 91)
鏡音リン sweet G3-C5(18), 55-155(101)
初音ミク Vivid G3-D5(20), 95-180( 86)
初音ミク Light A3-D5(18), 85-175( 91)
初音ミク A3-E5(20), 70-150( 81)
初音ミク Soft A3-E5(20), 70-150( 81)

VOCALOID3 になっても「推奨音域内でサンプルした音声を中埋めして発声する」という基本部分は変わっていないみたいですので、VOCALOID2, 3 区別なく並べています。

ちなみにエディタ上で明るい色になっている部分は C1 - B4 ですので、初音ミクあたりは C5 以上の灰色になっている高域まで推奨音域が広がっていることになります。

というか、メーカー公式のデモ
D
がこの初音ミク推奨音域の下限を下回ってる音使ってるのですがどういうことなの!?

文字グラフ

A#BC#D#EF#G#A#BC#D#EF (バス)
111222222222222333333333333444444444444555555555555
A#BC#D#EF#G#A#BC#D#E         VY2
A#BC#D#EF#G#A#BC#D#EF#G      がくっぽいどWHISPER
   C#D#EF#G#A#BC#D#EF#G      氷山キヨテル
A#BC#D#EF#G#A#BC#D#EF#G#A#BC がくっぽいど/NATIVE/POWER
   C#D#EF#G#A#BC#D#EF#G#A#BC (テノール)
111222222222222333333333333444444444444555555555555
        F#G#A#BC#D#EF#G#A             ガチャッポイド
     D#EF#G#A#BC#D#EF#G#A#BC#D        Lily
        F#G#A#BC#D#EF#G#A#BC          歌愛ユキ
     D#EF#G#A#BC#D#EF#G#A#BC#D#EF     結月ゆかり
            A#BC#D#EF#G#A#BC          鏡音レン serious
        F#G#A#BC#D#EF#G#A#BC#D#E      VY1/VY1V3
        F#G#A#BC#D#EF#G#A#BC#D#E      CUL
     D#EF#G#A#BC#D#EF#G#A#BC#D#EF#G   V3 Lily
        F#G#A#BC#D#EF#G#A#BC#D#EF     V3 Megpoid
            A#BC#D#EF#G#A#BC#D        鏡音レン power
              BC#D#EF#G#A#BC          鏡音レン cold
       EF#G#A#BC#D#EF#G#A#BC#D#EF#G   SF-A2 開発コード miki
       EF#G#A#BC#D#EF#G#A#BC#D#EF#G   猫村いろは
        F#G#A#BC#D#EF#G#A#BC#D#EF#G#A V2 Megpoid, Native
          G#A#BC#D#EF#G#A#BC#D#EF#G   Mew
            A#BC#D#EF#G#A#BC#D#EF     兎眠りおん
            A#BC#D#EF#G#A#BC#D#EF     蒼姫ラピス
        F#G#A#BC#D#EF#G#A#BC#D#EF#G#A#B (アルト)
111222222222222333333333333444444444444555555555555
              BC#D#EF#G#A#BC#D#EF#G#A      IA
               C#D#EF#G#A#BC#D#EF#G#A#B    歌手音ピコ
               C#D#EF#G#A#BC#D#EF#G#A#BC   SeeU
                 D#EF#G#A#BC#D#EF#G#A#B    初音ミク Dark
                 D#EF#G#A#BC#D#EF#G#A#BC   初音ミク Solid
                 D#EF#G#A#BC#D#EF#G#A#BC#  鏡音レン
                    F#G#A#BC#D#EF#G#A#B    鏡音リン power
                    F#G#A#BC#D#EF#G#A#B    鏡音リン warm
                 D#EF#G#A#BC#D#EF#G#A#BC#D 巡音ルカ
               C#D#EF#G#A#BC#D#EF#G#A#BC#D#E (ソプラノ)
111222222222222333333333333444444444444555555555555
                    F#G#A#BC#D#EF#G#A#BC#D   初音ミク Sweet
                     #G#A#BC#D#EF#G#A#BC#    鏡音リン
                      G#A#BC#D#EF#G#A#BC     鏡音リン sweet
                      G#A#BC#D#EF#G#A#BC#D   初音ミク Vivid
                        A#BC#D#EF#G#A#BC#D   初音ミク Light
                        A#BC#D#EF#G#A#BC#D#E 初音ミク
                        A#BC#D#EF#G#A#BC#D#E 初音ミク Soft
111222222222222333333333333444444444444555555555555

VOCALOID3 Library VY1V3インターネット VOCALOID 3 Megpoid Complete
V2→V3 になった音源では、VY1 が推奨音域変わらず。Megpoid は高域の半音 4個分が減りましたが、これは現実的な作りになった、ということで、退歩したのではないと思いますが……。

新規に出た SeeU, Mew の猫ボカロ達はアルト〜ソプラノあたりの、女声として繁用される声域をフォローする感じ。というか、ミクとかリンとかが音域高すぎ狭すぎなんであって、普通に使う女声ボカロとしてはそこらへんの、つまりルカ〜Lily あたりまでが使いやすいでしょうね。

おまけ

出力するのに使った Python スクリプトです。(Python 2.6 用)

好きに流用してください。

data = u"""
初音ミク,70-150,A3-E5
初音ミク Sweet,55-155,F3-D5
初音ミク Dark,60-145,D3-B4
初音ミク Soft,70-150,A3-E5
初音ミク Light,85-175,A3-D5
初音ミク Vivid,95-180,G3-D5
初音ミク Solid,65-160,D3-C5
鏡音リン,85-175,F♯3-C♯5
鏡音リン power,65-170,F3-B4
鏡音リン warm,60-160,F3-B4
鏡音リン sweet,55-155,G3-C5
鏡音レン,70-160,D3-C♯5
鏡音レン power,65-170,A2-D4
鏡音レン cold,60-160,B2-C4
鏡音レン serious,55-155,A2-C4
巡音ルカ,65-145,D3-D5
がくっぽいど/NATIVE/POWER,60-150,A1-C4
がくっぽいどWHISPER,60-150,A1-G3
V2 Megpoid,60-175,F2-A4
V3 Megpoid,60-175,F2-F4
Lily,90-180,D2-D4
ガチャッポイド,90-150,F2-A3
氷山キヨテル,60-160,C2-G3
歌愛ユキ,50-150,F2-C4
SF-A2 開発コード miki,70-170,E2-G4
猫村いろは,70-170,E2-G4
VY1/VY1V3,60-175,F2-E4
(ソプラノ),0-0,C3-E5
(アルト),0-0,F2-B4
(テノール),0-0,C2-C4
(バス),0-0,D1-F3
歌手音ピコ,70-150,C3-B4
VY2,70-140,A1-E3
SeeU,60-170,C3-C5
Mew,65-150,G2-G4
CUL,40-200,F2-E4
IA,63-228,B2-A4
結月ゆかり,60-120,D2-F4
兎眠りおん,60-140,A2-F4
蒼姫ラピス,70-200,A2-F4
V3 Lily,90-180,D2-G4
"""
notename = 'C D EF G A B'
def name_to_note(name):
    if u'♯' in name:
        sharp = True
        name = name[0] + name[2]
    else:
        sharp = False
    return int(name[1]) * 12 + notename.find(name[0]) + sharp

table = []
for i in data.split('\n'):
    if not i.strip():
        continue
    name, tempo, vocal_range = [x.strip() for x in i.split(',')]
    tempo = [int(x) for x in tempo.split('-')]
    vocal_range = vocal_range.split('-')
    tempo_width = tempo[1] - tempo[0] + 1
    note_low = name_to_note(vocal_range[0])
    vocal_width = name_to_note(vocal_range[1]) - note_low + 1
    key = note_low * 2 + vocal_width
    table.append((key, name, tempo, tempo_width, vocal_range, vocal_width))
table.sort(cmp=lambda x,y:cmp(x[0], y[0]))

## html
html_table = []
for (key, name, tempo, tempo_width, vocal_range, vocal_width) in table:
    html_table.append(
        u'''<tr><td>%s</td>
<td>%s</td><td>-</td><td>%s</td><td>(%s)</td><th>,</th>
<td>%s</td><td>-</td><td>%s</td><td>(%s)</td></tr>''' % (
            name,
            vocal_range[0], vocal_range[1], vocal_width,
            tempo[0], tempo[1], str(tempo_width).rjust(3)))
html = u'''<html>
  <head>
    <meta charset="UTF-8">
    <title>VOCALOID2, 3 推奨音域とテンポ</title>
  </head>
<body>
<table>
<caption>VOCALOID2, 3 推奨音域とテンポ</caption>
<thead>
<tr><th>名前</th>
<th colspan=3>音域</th><th>(幅)</th><th>,</th>
<th colspan=3>テンポ</th><th>(幅)</th></tr>
</thead>
<tbody>
%s
</tbody>
</table>
</body>
</html>''' % '\n'.join(html_table)

f = open('profile.htm', 'w')
f.write(html.encode('utf-8'))
f.close()

## text
table = []
for i in data.split('\n'):
    if not i.strip():
        continue
    name, tempo, vocal_range = [x.strip() for x in i.split(',')]
    tempo = [int(x) for x in tempo.split('-')]
    vocal_range = vocal_range.split('-')
    tempo_width = tempo[1] - tempo[0] + 1
    note_low = name_to_note(vocal_range[0])
    note_heigh = name_to_note(vocal_range[1])
    vocal_width =  note_heigh - note_low + 1
    key = note_low * 2 + vocal_width
    table.append((key, name, note_low, note_heigh))
table.sort(cmp=lambda x,y:cmp(x[0], y[0]))
leftcut = 20
octavehead = ''.join([x * 12 for x in '012345'])[leftcut+1:]
graph = [octavehead]
notetext = 'C#D#EF#G#A#B'
for (key, name, note_low, note_heigh) in table:
    text = [' ' * (note_low - 1)]
    for i in range(note_low, note_heigh + 1):
        text.append(notetext[i % 12])
    line = '%s %s' % (''.join(text), name)
    line = line[leftcut:]
    graph.append(line)
graph.append(octavehead)
f = open('profile.txt', 'w')
f.write('\n'.join(graph).encode('utf-8'))
f.close()