Windows版 音声合成 OCX

ドキュメントトーカ for Windows に付属してくる音声合成 OCX (DTalker.ocx)は、音声合成プログラミングを行う上での一番簡単な開発キットです。
閉じる
概要
ドキュメントトーカ for Windows に付属してくる音声合成OCX (DTalker.ocx)は、音声合成プログラミングを行う上での一番簡単な開発キットといえるでしょう。

たとえば、VisualBasic でプログラミングするとすれば、
DTalker1.SpeakKanji "こんにちは、今日の天気は如何ですか?" ドキュメントトーカのアイコン

と書くだけでいいのです。
もちろん、Visual Basic だけでなく、Microsoft Access や Microsoft エクセル等でも使用することができます。

DTalker.ocxを使用すれば、従来の録音による音声出力にかわり、文字で任意の音声出力が可能となります。
したがって、録音再生方式では不可能な多種多様な音声出力をダイナミックに作り出していくことができます。

声の種類

声の制御

その他機能
プロパティ
数字の読み方 BouYomi(Boollean)
コントロールの描画設定 ControlPicture(PTR to USERDEFINED)
エコー選択 Echo(Boolean)
トーン選択 High(Boolean)
速さ調整 Speed(Integer)
ステレオ選択 Stereo(Integer)
同期・非同期選択 Sync(Boolean)
喋る言葉 Text(String)
声色調整 Tone(Integer)
声色選択 Voice(Integer)
音量調整 Volume(Integer)


メソッド
音声の出力状態の取得 Boolean Busy()
漢字文字列を表音文字列に変換する String ConvertG(String KanjiString)
漢字文字列を認識用文字列に変換 String ConvertN(String Kanji, String Ninsiki)
音声辞書編集 Void DictEdit(String EditWord)
Text プロパティを喋る Boolean Speak()
表音文字の音声出力 Boolean SpeakKana(String SpString)
漢字文字列の音声出力 Boolean SpeakKanji(String SpString)
音声出力の中断(非同期時) VOID Stop()


イベント

マウスクリック Click
マウスダブルクリック DblClick
非同期出力時の出力完了を知らせる SpeakDone


数字の読み方
数字の読み方
機能 数字の読み方を棒読みにするか、桁読みにするかを指定します。
構文 object.BouYomi [= boolean]
設定値 False = 桁読み (既定値)
True = 棒読み


コントロールの描画設定
コントロールの描画設定
機能 コントロールのイメージを表示するピクチャイメージを設定します。 
構文 object.ControlPicture [= picture]
設定値 イメージファイル
DTalker1.ControlPicture = LoadPicture("abc.bmp")


エコー選択
エコー選択
機能 音声出力にエコー効果をつけるかつけないかを指定します。    
構文 object.High [= boolean]
設定値 False = エコー効果なし (既定値)
True = エコー効果あり
トーン選択
トーン選択
機能 トーン(高い、低い)を指定します。                   
構文 object.High [= boolean]
設定値 False = 低い (既定値)
True = 高い
速さ調
速さ調整
機能 喋る速さを10段階で指定します。                   
構文 object.Speed [=integer]
設定値 0-9 既定値=5
ステレオ選択
ステレオ選択
機能 左、中、右スピーカより音声をだします。                
構文 object.Stereo [=integer]
設定値 0 = 中 (既定値)
1 = 左
2 = 右
同期・非同期選択
同期・非同期選択
機能 同期出力、非同期出力を選択します。                 
構文 object.Sync [= boolean]
設定値 False = 非同期
True = 同期 (既定値)
喋る言葉
喋る言葉
機能 喋る文章を入れておきます。                       
構文 object.Text [=String]
設定値 喋らせたいテキスト
声色調整
声色調整
機能 喋る声の高さを5段階で指定します。                  
構文 object.Tone [=integer]
設定値 0-4 既定値=3
声色選択
声色選択
機能 声質を4段階で指定します。                       
構文 object.Voice [=integer]
設定値 0= 太郎(男声) (既定値)
1= 花子(女声)
2= ロボ太郎(ロボティック男声)
3= ロボ子(ロボティック女声)
音量調整
音量調整
機能 音量を10段階で指定します。                      
構文 object.Volume [=integer]
設定値 0-9 既定値=7
音声の出力状態の取得
音声の出力状態の取得
機能 非同期出力時、音声出力が完了したかどうか調べます。        
構文 BusyFlag = object.Busy
引数 なし
戻値 Boolean BusyFlag
TRUE = Busy
FALSE = Not Busy


漢字文字列を表音文字列に変換する
漢字文字列を表音文字列に変換する
機能 漢字文字列を表音文字列に変換します。                 
構文 Hstring = object.ConvertG( KanjiString )
引数 String KanjiString = 漢字文字列
戻値 String HString = 表音文字列
説明 漢字文字列を表音文字列に変換します。
表音文字列は, SpeakKana メソッドで音声出力されます。
漢字文字列を音声認識用文字列に変換
漢字文字列を音声認識用文字列に変換
機能 漢字文字列を音声認識用文字列に変換します。
構文 Hstring = object.ConvertN( Kanji, Ninsiki )
引数 String Kanji = 漢字文字列
String Ninsiki = 認識結果文字列
戻値 String HString = 音声認識用文字列
説明 ドキュメントトーカ音声認識用文字列を作成します。
漢字文字列をカナ文字列(音声認識用文字列)に変換し、音声認識用文字列に返します。
認識用文字列のフォーマットは、"AAAAAA|BBB|CCC=Ninsiki" となります。
AAAAAAは漢字文字列をカナ文字列に変換したもので、| はオプションがあることを示し、
AAAAAAがさらに細かい単位に区分されていることを示します。
= の後が認識結果文字列で、認識した結果の答えとしたい文字列を指定します。
もし Ninsiki=""ならば、kanji が代替えで返されます。

例) Kanji=日本の首都, Ninsiki=東京 で本関数を呼ぶと
    HString=ニホンノシュト|ニホン|シュト=東京 という答えがかえります。
   「日本の首都」という漢字に対して、ニホンノシュト|ニホン|シュトの3単語を
   認識対象単語として選び出しました。
   このデータで音声認識をかけると「東京」という答えを得るようなプログラムを組めます。
音声辞書編集
音声辞書編集
機能 単語の読み方をユーザ辞書に登録します。                   
構文 object.DictEdit(EditWord)
引数 String EditWord = 登録したい単語 NULLでも構いません。
戻値 なし
説明 音声辞書登録ダイアログが開きます。
引数で指定した「登録したい単語」は、ダイアログの中に反映されます。
NULLならば自分で入力することになります。
Text プロパティを喋る
Text プロパティを喋る
機能 Text プロパティを喋ります。                            
構文 Done = object.Speak
引数 なし
戻値 Boolean Done
 True = 正常終了
 False = 失敗(他のアプリでサウンドを使用中の場合が多い)
表音文字の音声出力
表音文字の音声出力
機能 表音文字の音声出力を行います。                        
構文 Done = object.SpeakKana( SpString )
引数 String SpString = 表音文字列
戻値 Boolean Done
 True = 正常終了
 False = 失敗(他のアプリでサウンドを使用中の場合が多い)
漢字文字列の音声出力
漢字文字列の音声出力
機能 漢字文字列の音声出力を行います。                      
構文 Done = object.SpeakKanji( SpString )
引数 String SpString = 漢字文字列
戻値 Boolean Done
 True = 正常終了
 False = 失敗(他のアプリでサウンドを使用中の場合が多い)
音声出力の中断(非同期時)
音声出力の中断(非同期時)
機能 非同期で出力中の音声の中断を行います。                 
構文 object.Stop
引数 なし
戻値 なし
説明 非同期モードで音声出力中の音声出力を中断させます。


マウスクリック
マウスクリック
機能 Visual Basic の標準の Click イベントと同じです。
マウスダブルクリック
マウスダブルクリック
機能 Visual Basic の標準の Double Click イベントと同じです。
非同期出力時の出力完了を知らせる
非同期出力時の出力完了を知らせる
機能 非同期出力時の出力完了を知らせます。
構文 Private Sub DTalker1_SpeakDone()
説明 非同期出力が完了した時このイベントが発行されます。


VB5での使い方
  1. VB5を起動します。
  2. プロジェクトメニューからコンポーネントを選びます。
  3. コンポーネントの中からDTalker TTS OLE Contorol module をチェックします。
  4. ツールボックスにドキュメントトーカコントロールが付加されます。
  5. ドキュメントトーカコントロールをえらび、フォーム上に貼り付けます。
  6. 後は、通常のVBの作法でプログラミングしてください。


例 ドキュメントトーカカスタムコントロールがクリックされたとき「こんにちは お元気ですか?」と喋る
Private Sub DTalker1_Click()
  DTalker1.text="こんにちは お元気ですか?"
  DTalker1.Speak                         'Textプロパティを喋る
End Sub
または
Private Sub DTalker1_Click()
  DTalker1.SpeakKanji "こんにちは お元気ですか?"   '漢字文字列を喋る
End Sub
Private Sub DTalker1_Click()
  DTalker1.SpeakKana "コンニチワ オゲ^ンキデスカ?"  '表音文字で喋る
End Sub

例 早口にする
Private Sub DTalker1_Click()
  DTalker1.Speed=9
  DTalker1.SpeakKanji "こんばんは 早くお休み"
End Sub


注意)
非同期モードを使用するときは、十分注意をしてプログラムしてください。
Speakを連続させても前回のSpeakが完了していなくてエラーになってしまうことが多いからです。
エクセルでの使い方
エクセルユーザーズガイド 10.4章リンクオブジェクトと埋め込みオブジェクトを参照しておいてください。
A.スタティックな方法
  1. エクセルを起動します。
  2. メニューより「挿入」「オブジェクト」により DTalker Controlをワークシート場に貼り付けます。
  3. DTalker Controlをクリックし、マウス右ボタンで、DTalker Controlオブジェクトのプロパティを選びます。
  4. 声色の設定と、喋る言葉を入力し、OKを押します。
  5. DTalker Controlをダブルクリックすると、DTalker Controlに設定されている言葉を喋ります。
B.プログラミングによる方法
'
' ワークシート上で「挿入」「オブジェクト」により DTalker Controlをあらかじめ貼り付けておき
' 選択された範囲を棒読みするプログラム
'
Sub Test1()
  Set MyObject = Worksheets("Sheet1").OLEObjects(1)
  MyObject.Object.Sync = True      '同期モード
  MyObject.Object.Voice = 0        '男声
  MyObject.Object.Text = "こんにちは"
  MyObject.Object.Speak
  MyObject.Object.BouYomi = True    '棒読み
  Set Rangetoincrement = Selection
  For Each C In Rangetoincrement
   If C.Value = "" Then
    MyObject.Object.Text = "跳んで"
   Else
    MyObject.Object.Text = C.Value
   End If
   MyObject.Object.Speak
  Next C
  MyObject.Object.BouYomi = False    '桁読みに戻す
End Sub
'
' 実行する毎に DTalker Controlを貼り付けて実行が終ったら削除する方法
'
Sub Test2()
  Range("A1").Select       '"A1"の位置にDTalker Controlを貼り付ける
  Set MyObject = Worksheets("Sheet1").OLEObjects.Add(ClassType:="DTalker.DTalkerCtrl.1")
  MyObject.Object.Sync = True
  MyObject.Object.Voice = 1         '女声
  MyObject.Object.Speed = 9         '速さ9
  MyObject.Object.Text = "こんにちは"
  MyObject.Object.Speak
  MyObject.Delete                'DTalker Controlを削除
End Sub
表音文字について
半角のカタカナ及び制御文字列によって記述された文字列が表音文字列です。
一般的なテキストエディタで作成が可能であり、また、ライブラリを使用して自動的に作り出すことが可能です。
表音文字列の一般的な作成手順
1.発音内容をカタカナで表記する。
2.アクセントをつける。
3.イントネーションをつける。
カタカナ表記の原則
普通にカタカナで表記してください。ただし、書き方と発音が違う場合があります。発音に忠実に書くのが最良の方法ですが、次のようなことに注意して書いてみてください。
アクセント:   アクセント位置には、"^"記号を入れる。
は と へ :   助詞の「は」と「へ」は「ワ」「エ」にかえる。
長音   :   おとうさんは   オト^ーサンワ
          経験       ケーケン
鼻濁音
「が・ぎ・ぐ・げ・ご」の発音を鼻にかかったような発音にする。鼻濁音表記は「″」を「°」にかえる。
無声化文字
無声化する文字には直後に # をつける。
出版   シュ#ッパン
学者   ガク#シャ

アクセントのつけかた
日本語のアクセントは文節毎に現れるので、まず文を文節毎に分解します。文節の分解のしかたとして簡単な方法としては、「ね」をつけてみて意味が通じるところを文節境界とする方法があります。また、句読点のあるところは必ずアクセント境界となります。
例)日本語の|アクセントは|文節毎に|現れる|音の|高低で|表される。|
次に文節毎にアクセント位置を決定します。日本語の発声では、各文節の声の高さは、高と低の2種類しかなく、高から低へ変化する位置がアクセント位置となります。(声の高さがほぼ一定でアクセントのない平板型もあります。)
日本語の    ニホンゴノ
アクセントは  ア^クセントワ
文節毎に    ブンセツゴ^トニ
現れる     アラワ^レル
音の      オトノ
高低で     コ^ーテーデ
表される。   アラワサレ^ル。
表音文字列では、文節の区切りをスペースで表記し、アクセント位置を「^」で表します。
ニホンゴノ ア^クセントワ ブンセツゴ^トニ アラワ^レル オトノ コ^ーテーデ アラワサレ^ル。
イントネーションの付け方
イントネーションもアクセントと同じで声の高低で表されます。アクセントは文節単位という比較的短い区間での声の上げ下げであったのに対して、イントネーションは、より広い区間での声の上げ下げのことです。つまり、いくつかの文節をまとめて、発声のまとまりをつけることで、それには普通の文章を書くのと同様に句読点を入れることで指定が出来ます。
句読点の間隔が長くなると発音が低くなってしまいます。長すぎる区間の中間にスラッシュ(/)を入れることにより、声を立て直すことができます。その目安としてカタカナで15~20文字程度が適当です。
合成ドライバでは自動的に立て直すアルゴリズムをとっていますので、この件に関してはあまり気にすることはありません。
疑問調の文には最後に疑問符を付ければ、尻上がりの発声にすることができます。
制御文字列
声色や音声の速さを制御するための文字列を、制御文字列と呼びます。
速さ制御    =S1=,=S2=,=S3=,=S4=,=S5=,=S6=,=S7=,=S8=,=S9=
音量制御    =V0=,=V1=,=V2=,=V3=,=V4=,=V5=,=V6=,=V7=,=V8=,=V9=
声色(太郎)   =M1=,=M2=,=M3=,=M4=,=M5=
  (花子)    =F1=,=F2=,=F3=,=F4=,=F5=
  (ロボ太郎) =R1=,=R2=,=R3=,=R4=,=R5=
  (ロボ子)   =W1=,=W2=,=W3=,=W4=,=W5=
トーン       =T0=,=T1=
エコー       =E0=,=E1=
ステレオ      =P0=,=P1=,=P2=
注)エコー,ステレオ制御文字列は1出力単位で効果します。つまりSpeak**で出力した音声全体にエコー効果やステレオ効果が働きます。


配布条件
ドキュメントトーカカスタムコントロールを使用して作ったアプリケーションは、個人の使用責任のもとでのみ使用されるものとします。アプリケーションそのものの配布は自由ですが、ドキュメントトーカカスタムコントロールは同時に配布・転載はできません。その場合、当社(クリエートシステム開発株式会社)との契約の上でのみ配布・販売が可能となります。また、ドキュメントトーカカスタムコントロールを使用して作ったアプリケーションにより生じた問題は、その理由のいかんにかかわらず、当社では一切の責任を負いかねます。



ドキュメントトーカはクリエートシステム開発株式会社の登録商標です。
Microsoft Visual Basic は米国 Microsoft Corporation の登録商標です。

閉じる