Top  > SpchWの部屋  > Q&A

SpchW Ver. 1.00

 <Q&A>

  一般
 
 Q.1-1  必要なマシン・スペック等は
   基本的には使用する音声合成エンジンの推奨スペックをお調べください。それに合った
 スペックならばSpchWは問題なく動くと思われます。
 MicrosoftのページにはSAPI 5.1の要件としてはPentium II相当の233MHz・メモリ128M以上
 とあります。 SAPI 5.1の対象OSはWindosXP/2000/ME/98とSP6a以上のNT 4.0だそうです。
 SpchWのテスト環境としてはWindows2000 SP3・PentiumII 400MHz・メモリ196Mでテストを
 行っています。
 Q.1-2  日本語と英語以外のエンジンでも使えますか?
   テストは行っていません。
 入力はBOM(Byte Order Mark)付きのLittle EndianのUTF-16のUNICODEも受け付けられるように
 してありますが、ダイアログで指定する項目などに支障があるかもしれません。
 Q.1-3  XXXXの音声合成エンジンは使えますか?
   それがSAPI 5.x対応なら使えると思います。
 Q.1-4  NECのもの以外にどんな日本語用SAPI 5.x対応のエンジンがありますか?
   私もわかりません。
 
  操作
 
 Q.2-1  英語のエンジンだけを入れているのだが、メニューの辞書が使えない
   現在の仕様です。その理由はこちらで説明しています。もしそのエンジンがそれ自体の辞書UI(
 ユーザー・インターフェース)を搭載している場合は、メニュー「情報」->「Voice情報」でそのVoiceを
 選び、「Add Remove Word」のボタンから辞書操作ができます。ちなみにMicrosoft SAM/Mike/
 Maryは辞書UIを持っていません。
 Q.2-2  メニューの「辞書」とAdd Remove Wordの違いは?
   SAPI 5.1では辞書(Lexicon)にアクセスする入り口が二つあって、一つはSpLexiconオブジェクトを
 使う方法、もう一つは音声合成エンジンのベンダーが用意しているUIを使う方法です。メニューの
 「辞書」はSpLexiconによるアプローチで、Voice情報画面のAdd Remove Wordボタンはベンダーの
 UIを呼んでいるだけです。UIが用意されていない場合はAdd Remove Wordボタンが押せないように
 なっています。
 どちらを使うべきか、という問題は微妙です。A社のエンジンとB社のエンジンがそれぞれのUIで
 (数字の登録は許可しないなどの)何らかの特別な処理を行っていたとすると、そのうち不具合が
 出てくる可能性があります。ですからベンダーの用意したUIを使っていれば必ず安全とも言い切れ
 ないでしょう。メニューの「辞書」ではUser Lexiconの内容をexport/importできるので、あらかじめ
 内容を保存しておけば、All or Nothingという状況は避けられると思います。
 Q.2-3  Wav出力の時、他で開いていないのに「他でファイルが使用中」と言われる
   エクスプローラまたはMicrosoft Media Playerがファイルを握っていることがあります。
 テスト環境(Windows2000)では次のような現象が見られました。
 .wavがMedia Player 7.1に関連付けられている状況でエクスプローラを開き、まず対象のWavファイル
 をシングルクリックします。次にそのまま再生せずに、同じフォルダの別のファイルをシングルクリック
 します。するともうWavファイルは放されていいはずです。それでもその状態でSpchWでそのWav
 ファイルに上書き出力しようとすると排他制御のエラーになります。これはNECのSmartSpeechでも
 同じ現象が起きました。
 対処法としては、エクスプローラ側を「最新の状態に更新」でリフレッシュするか、一旦(上位フォルダ
 に移るなどして)別のフォルダを選択した状態にしてから出力してください。面倒ですが、SpchW側
 から見ると「誰かが握っている」状態なので相手側で放してもらうしかありません。
 なおWindowsXP+Media Player8.0ではこの現象は見られませんでした。
 Q.2-4  ディスクフルになった後に同じ名前でWAVファイル出力をすると排他エラーになる
   この問題に遭遇した場合は、SpchWを再起動させてから処理を行ってください。
 この現象はフロッピーディスクのような容量の小さいメディアにWAVファイルを出力させることにより
 容易に再現させることができるのですが、どうもSAPI 5.1(またはその先)の仕様(あるいはバグ)
 ではないかと考えています。
 プログラム的に言えば、SpVoice.Speak( )がStatus.LastHResultとしてSTG_E_WRITEFAULT(0x8003001D)を返してきた時、SpVoice.AudioOutputStreamで使っているSpFileStreamにClose( )
 をかけても出力ファイルを放さない、という現象です。
 ディスクフルになった時、SpchWを立ち上げたまま、対象のファイルをエクスプローラ等で削除しようとしても「他のプログラムが使用中です」ということで削除できない、という問題も同じことが原因です。その場合も一度SpchWを終了させてから削除してください。
 Q.2-5  なんとなくメモリー・リークしているみたいだけれど
   原因は解明しきれていません。数時間程度のRunでは影響は出ないと思いますが、気になる方は
 使用を中止してください。
 Q.2-6  本文やコメント行でピッチが指定できないのは何故ですか?
   SAPI 5.1ではTTS XMLとしてしかpitchを指定できません。行番号とEOF通知はプログラム内部で
 データを組み立てる時にptichタグを付け、XMLを解釈するというフラグを立てて発声(Speak)して
 います。行番号とEOF通知の声の指定で「TTS XMLを解釈しない」というオプションが選択できない
 のはそのためです。
 本文とコメント行でも同じように内部で行データにpitchタグを付けてしまえばいいのではないか、
 という考え方もありますが、その案は採用していません。pitchタグを有効にするためには常に「TTS
  XMLを解釈する」モードになり、今度は「pitchは指定しただけなのにTTS XMLが解釈されてしまう
 のは何故?」という状況になってしまうからです。EOF通知でも同じことが言えますが、こちらは局所
 的なのでここにTTS XMLを指定しようとする人はあまりいないだろうという考えを持っています。
 Q.2-7  MP3やWMAなどに直接出力できないか
   今のところ考えていません。一度WAVファイルに出力して別ツールで変換してください。
 
  TTS XML
 
 Q.3-1  TTS XMLを指定すると「nn行目にエラーがあります」というメッセージが出るが
   可能性は三つあります。一つはタグが行内で完結していないことです。例えば3行分のVoiceを
 変えたい時に1行目に<voice>タグを置き、3行目に</voice>タグで閉めるという発想は自然な
 ものですが、SpchWでは行単位に処理をしているため、それが許されません。1行目の<voice>は
 行末に</voice>がなくても正常に処理されますが、2行目ではベースのVoiceに戻り、3行目は
 <voice>なしに</voice>が出てくるためエラーとなります。
 二つ目は<voice>でインストールされていないVoice名を指定した場合です。Microsoft Samと指定
 するべき所を、MS Samとしたという場合も同じです。(大文字小文字は区別されないようです)
 三つ目の可能性は文法エラーです。例えば<voice required="Microsoft Sam">はエラーになり
 ます。正しくは<voice required="NAME=Microsoft Sam">です。また<rate absspeed=2>なども
 エラーになります。その理由は数字をダブルクォーテーションでくくっていないからです。
 Q.3-2  Persist XMLを指定すると一つの処理を終わらせてもずっと効果が残ってしまう
   現在修正方法はわかっておらず、対処法としては一旦SpchWを終わらせるしかありません。
 プログラム的にはどうもPersist XMLのフラグを一度立てるとその効果はSpVoiceオブジェクトが
 生きている間続くようです。SpVoiceを生かしたままそのグローバルなフラグをOFFにする方法が
 あればよいのですが。
 
Back