パソコンにいろいろな国の言葉をしゃべらせる

2010年08月03日(火)07時51分

Microsoft Speech Platform で複数言語インストール

Microsoft Speech Platform について説明した前々回(Microsoft Speech Platform の日本語音声合成エンジン)にも書きましたが、このダウンロードページには「26人17言語分」のファイルが存在します(ちなみに、人数より言語数の方が少ないのは、中国語や英語などで、話されている地域(国)ごとに微妙に違う言語、つまり方言というかなまりというか、そういったものが重複して用意されているからです)。
今回は、それら複数の言語をインストールしている場合に、一つのテキストファイル内で、それぞれを切り替えながら使うための方法について説明します。

※この記事は、ある意味前回(青空文庫や六法のオーディオブックを無料で作る方法)の続きといえますので、お使いのパソコンに Microsoft Speech Platform がインストール済みで、それを使うためのスクリプトの準備が終わっていることが前提となっています。

結論から

いきなり結論から書きますと、文書全体を「<xml></xml>」で囲み、言語を切り替えたい場所を「<lang langid="言語ID"></lang>」で囲む、です。
例えば「<xml>英語で<lang langid="409">Hello!</lang>と挨拶します。</xml>」という文章を Microsoft Haruka で読ませれば、「Hello!」の部分だけ英語で読み上げます。
これと、次に掲載するリストの言語 ID を組み合わせれば、さまざまな言語でしゃべらせることができます。
もちろん、一つの文章内に複数の言語を混在させることが可能です。
ただ、上の文章を読ませてみた感じ、結構間が空きます。
文字にすると「英語で。Hello。と挨拶します。」のような感じでしょうか。
欲を言えば、もうちょっとスムーズにつながってくれると嬉しかったのですが。

各話者の情報

言語ID 言語 名前 内部名
410 イタリア語(イタリア) Lucia Microsoft Server Speech Text to Speech Voice (it-IT, Lucia)
413 オランダ語(オランダ) Hanna Microsoft Server Speech Text to Speech Voice (nl-NL, Hanna)
403 カタロニア語 Herena Microsoft Server Speech Text to Speech Voice (ca-ES, Herena)
41D スウェーデン語 Hedvig Microsoft Server Speech Text to Speech Voice (sv-SE, Hedvig)
80A スペイン語(メキシコ) Hilda Microsoft Server Speech Text to Speech Voice (es-MX, Hilda)
C0A スペイン語(モダン ソート) Helena Microsoft Server Speech Text to Speech Voice (es-ES, Helena)
406 デンマーク語 Helle Microsoft Server Speech Text to Speech Voice (da-DK, Helle)
407 ドイツ語(ドイツ) Hedda Microsoft Server Speech Text to Speech Voice (de-DE, Hedda)
414 ノルウェー語(ブークモール) Hulda Microsoft Server Speech Text to Speech Voice (nb-NO, Hulda)
40B フィンランド語 Heidi Microsoft Server Speech Text to Speech Voice (fi-FI, Heidi)
C0C フランス語(カナダ) Harmonie Microsoft Server Speech Text to Speech Voice (fr-CA, Harmonie)
40C フランス語(フランス) Hortense Microsoft Server Speech Text to Speech Voice (fr-FR, Hortense)
416 ポルトガル語(ブラジル) Heloisa Microsoft Server Speech Text to Speech Voice (pt-BR, Heloisa)
816 ポルトガル語(ポルトガル) Helia Microsoft Server Speech Text to Speech Voice (pt-PT, Helia)
415 ポーランド語 Paulina Microsoft Server Speech Text to Speech Voice (pl-PL, Paulina)
419 ロシア語 Elena Microsoft Server Speech Text to Speech Voice (ru-RU, Elena)
804 中国語(中国) HuiHui Microsoft Server Speech Text to Speech Voice (zh-CN, HuiHui)
404 中国語(台湾) HanHan Microsoft Server Speech Text to Speech Voice (zh-TW, HanHan)
C04 中国語(香港) HunYee Microsoft Server Speech Text to Speech Voice (zh-HK, HunYee)
411 日本語 Haruka Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)
409 英語(U.S.) Helen Microsoft Server Speech Text to Speech Voice (en-US, Helen)
4009 英語(インド) Heera Microsoft Server Speech Text to Speech Voice (en-IN, Heera)
C09 英語(オーストラリア) Hayley Microsoft Server Speech Text to Speech Voice (en-AU, Hayley)
1009 英語(カナダ) Heather Microsoft Server Speech Text to Speech Voice (en-CA, Heather)
809 英語(英国) Hazel Microsoft Server Speech Text to Speech Voice (en-GB, Hazel)
412 韓国語 Heami Microsoft Server Speech Text to Speech Voice (ko-KR, Heami)

SAPI5(Windows 標準の音声認識・合成システム)には、各話者が他にも「Vendor(製作者)」「Age(年齢)」「Gender(性別)」という属性を持っているのですが、Microsoft Speech Platform も同じく持っています。
ただし全話者共通で、「Vendor=Microsoft」「Age=Adult」「Gender=Female」となっており、つまり全員が「Microsoft 社製の大人の女性」の声であるということです。
「H」で始まる名前が圧倒的多数を占めていますが、全員がそうというわけではないのが謎なところです。
国によっては伝統や慣習で「Hで始まる女性名は一般的でない」といったことでもあるんでしょうか。

他の属性を指定する

話者の指定は「<lang>」タグによる言語 ID 指定だけでなく、例えば内部名を指定して「<voice required=”Name=Microsoft Server Speech Text to Speech Voice (ja-JP, Haruka)”>」のような指定もできます。
本来ここでは、SAPI5 と同様に Age や Gender 等も指定でき、例えば「<voice required=”Age=Adult;Gender!=Male;Language=411;”>」という風にもできるのですが、前述のように「Vendor」「Age」「Gender」とも全員同じで、各言語につき一人ずつしかいませんから、今のところ指定する意味はなく、言語を指定すれば話者を指定したのと同じことになります。
もちろん将来、各言語に男性話者が追加される、というようなことがないとは言えませんから、あくまで「現時点では」意味がない、ということではあります。
それから「required」は、文字通り「必須の」指定で、これで指定した場合、すべての条件に完全一致する話者がインストールされていない場合、話者は変更されません。
もし「required」に替えて「optional」を使用すれば、指定された内容になるべく近い話者を選び出して変更してくれます。
当然これも、現時点での Microsoft Speech Platform においては意味のない話ですが。
なお、冒頭の例で使用した「<lang langid="409">」は、「<voice required=”Language=411”>」と同じことで、それの単なる短縮記述です。

XML モード

ちなみに、文中にこういった XML タグを埋め込み、それを解釈しながら読み上げるモードは、ソースコード上で強制することもできますが、spcbght においては自動解釈モードになっています。
この自動解釈モードを指定した場合、SAPI5が何をもって「この文章は XML テキストである」と判定するかというと、「先頭に XML タグ(っぽいもの)が存在するか否か」で判断しているようです。
文章の先頭に「<」があり、それにタグとして使える文字セット(半角英数記号)が続き、「>」があると、その文章は XML テキストとみなされます。
ですので、冒頭で「<xml></xml>」で囲む、と書きましたが、別に囲まなくとも「<xml>」だけでも大丈夫ですし、もし先頭文字から話者を指定している場合は、その「<lang>」タグが XML モードへの切り替えトリガーとなりますので、あえてわざわざ「<xml>」タグを書く必要もありません。
もっと言うと、半角英数がなく、閉じタグもなく、ただ文頭に「<>」と書いておくだけでも XML モードで読み上げられます。
ただし先頭に「<」だけあって、その後にいきなり日本語の文章が続いていると XML テキストとはみなされなかったので、「>」は必要なようです。

速度や音程の変更

XML モードでは「速度」「音程」「音量」も、それぞれ動的に変化させることができます。
まず音量は「<volume level="数値"></volume>」で囲み、指定できる数値は 0~100 で、数値が大きいほど音量も大きくなります(といっても標準が100なので、どちらかと言えば「数値を小さくすれば音量が下がります」となります)。
速度は「<rate absspeed="数値"></rate>」、音程は「<pitch absmiddle="数値"></pitch>」で指定します。
指定する数値は -10~10 で数値が大きいほど速く(速度)、あるいは高く(音程)なります(標準は0です)。
なお、「absspeed」「absmiddle」の頭についている「abs」は絶対値(absolute)のことで、これをただの「speed」「middle」で指定すると相対値指定になり、つまりその時点での速度や音程に、指定した数値をプラス、あるいはマイナスします。

何に使うか

使い道…、といってすぐに思いつくのは、やはり語学学習用途でしょう。
そうなると、ヒンディー語やアラビア語、マレー・インドネシア語、ベトナム語、タガログ語といった言語がないのは少し残念なところですが。
しかし例えば、英語能力を評価する検定試験として有名な TOEIC は、2006年から新方式となり、米国英語だけでなく、英国英語・カナダ英語・オーストラリア英語の発音もテスト対象としているそうです。
そしてこれらは、いずれも Microsoft Speech Platform の話者として存在しますから、同じ文章を4人の話者で読み上げさせて、雰囲気の違いに慣れることでテスト対策とする、というような使い方がある、のかな?と思います。
まあ正直、自分は語学力が皆無に等しく、また日常的に外国語に接する機会も全くありませんので、個人的にはいま一つ使い道が思いつかないわけですが。

英語話者5人のサンプル音声

とりあえず最後に、英語話者5人による「不思議の国のアリス」冒頭部分の読み上げ音声のサンプルを置いておきます。
違いの分かる方のために。

関連記事

【同じタグを付けた記事の一覧】
eラーニング 音声技術 語学学習 音声合成 spcbght

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(66)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(35)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(27)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(18)
WindowsLiveWriter(15)
画像管理(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
fi-6130(9)
FLAC(9)
JavaScript(9)
ウォークマン(9)
英語音読学習計画(8)
Gracenote(8)
Prolog(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
spcbght(7)
wxWidgets(7)
VirtualBox(6)
W63CA(6)
DCP-J552N(6)
WinRT(6)
WindowsLiveMesh(6)
iGoinLM(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
MP3Gain(6)
LAME(5)
音楽技術(5)
Mery(5)
楽器演奏(5)
GalateaTalk(4)
nLite(4)
WindowsLiveSkyDrive(4)
ホームページ(4)
GalateaProject(4)
MIDI(4)
LLVM(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
178位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
20位
アクセスランキングを見る>>
FC2カウンター