文法編1-19 音声合成


1−19 音声合成(TALK文)

 ローマ字表記のテキスト(文字列)から任意の日本語を合成でき、性別(男性、女性)、発声速度などの指定によりいろいろな声の質の音声が合成できます。また、楽譜を表す文字列を加えると歌を歌います。

列\行
akasatanahamayarawagazadabapa
ikisicinihimi ri gizidibipi
ukusucunuhumuyuru guzudubupu
ekeseteneheme re gezedebepe
okosotonohomoyoro gozodobopo

列\行きゃしゃちゃにゃひゃみゃりゃぎゃじゃびゃぴゃその他特殊文字
kyasyacyanyahyamyaryagyazyabyapyaん→x
っ→q

ティ→ti
トゥ→tu
           
kyusyucyunyuhyumyuryugyuzyubyupyu
kyesyecyenyehyemyeryegyezyebyepye
kyosyocyonyohyomyoryogyozyobyopyo

 TALK文を使用するときには画面数を2以上に指定して下さい。指定した画面数の最大画面は音声合成のためのワークエリア(0000H〜3FFFH)と重なるため使用できなくなります。
 音声テキストは制御文字列と音声文字列によって構成されます。
 また、歌わせるときには、楽譜文字列を加えて音声テキストとします。

1−19−1 制御文字列

 制御文字列は次の3文字で構成されています。

 発声速度は、スペースにすると“2”を指定した場合と同じ速度になります。
 固定語の指定はスペースのかわりに0〜4の数字を入れると、次の固定語を発声させることが出来ます。この場合、性別の指定にかかわらず女性の声で発声します。

入力番号固定語の内容
0終わりました
1お待ち下さい
2故障中です
3いらっしゃいませ
4ありがとうございました

1−19−2 音声文字列

 音声文字列の最初には“x(ん)”および“q(っ)”が使用できません。また、“q(っ)”は音声文字列の最後にも使用できません。
 1つの音声文字列の長さは最大30音節までです。“a”、“ka”、“sya(しゃ)”など、母音1つにつき1音節とみなし、“x”、“q”および“-”(のばす音)も1音節に数えますが、“-”以外の記号は数えません。
 音声文字列の最後は“.”または“?”で終結します。“?”で終結した場合には、疑問調の尻上がりの発声をします。

(1)言葉の区切り
 “/”、“ ”(スペース)、または“?”で言葉を区切ることができます。

“/”の場合1つの音声文字列の中で2つまで使用できます。
区切った語尾を少しさげて発声し、1音節分の間を置いて次の言葉を発声します。
“ ”(スペース)の場合使用個数には特に制限はありません。
区切った語尾を少しさげて発声し、間を置かずに次の言葉を続けて発声します。
“?”の場合終結用の“?”とは別に2つまで使用できます。
区切った語尾を尻上がりに発声し、1音節分の間を置いて次の言葉を発声します。
 “/”と“?”の混用は、終結用の“?”を別にして、合計2つまでしか使用できません。

(2)アクセント
 アクセントを付ける音節(“x”、“q”は除く)の母音の直後に“'”(SHIFTキーを押しながら[7]キーを押します)を付けます。
 “'”は言葉ごとに1つだけ使用できます。音声文字列が言葉で区切られていない場合には、1音声文字列に1つです。

(3)長音
 母音の直後に“-”(マイナス)を付けると音をのばすことができます。“-”は何回でも使用できますが、1音節に数えますので注意してください。

(4)調子
 言葉の先頭に“^”または“+”を付けてその言葉を他の言葉より少し高い調子で発声することができます。“^+”を付けると更に高くなります。
 “^”および“^+”は、音声文字列の先頭の言葉、または“/”か“?”で区切られた次の言葉の先頭に付けられます。
 “+”は、“ ”(スペース)で区切られた次の言葉の先頭にも付けられます。

(5)無声化
 母音の後に“*”を付けて無声化することができます。
 “*”は何回でも使用できます。

1−19−3 楽譜文字列

 楽譜文字列は音声文字列の後に“:”で区切って付けます。
 1つの音節に対して必ず1つの音符を与えます。
 次に上げる音声文字列内の特殊記号は歌わせる場合、無視されます。
 “ ”(言葉の区切り)、“'”(アクセント)、“^”。“+”。“^+”(調子)
 また、“?”を使用しても“/”や“.”と同じ働きをするだけで、尻上がりの発声はしません。

 ・楽譜文字列で使用する文字・記号

文字または記号意味
CDEFGABそれぞれドレミファソラシの音符に対応します。
+音符の後に付けて音を半音上げます。(シャープ)
-音符の後に付けて音を半音下げます。(フラット)
O(オー)後に文字をつけて音の高さを決めます。(初期設定:O4)
R休符(必ず“/”と対応させます。)
L後に数字(1〜16)を付けて音の長さを決めます。(初期設定:L4)また、音符や休符の後に直接数字を付けて、1つだけ長さを変えることもできます。
V後に数字(0〜15)を付けて、音の大きさを決めます。(初期設定:V8)

・PC-6601の音域については、第2部・3章をお読みください。
 PC-6601が、それぞれの文字列に誤りがないのに、発声しなかったり、途中で発生をやめてしまうことがあります。これを判断するにはTALK文の後で
 PRINT PEEK (&HFA5A) AND &H10
を実行してみてください。最後までちゃんと発声した時は“0”、そうでない時は“16”と表示します。