// 音声合成を初期化する private void InitializeSpeechSynthesis() { pxcmStatus sts; var session = senseManager.QuerySession(); // 音声合成エンジンを列挙する TextDesc.Text += "音声合成エンジン\n"; PXCMSession.ImplDesc inDesc = new PXCMSession.ImplDesc(); PXCMSession.ImplDesc outDesc = null; PXCMSession.ImplDesc desc = null; inDesc.cuids[0] = PXCMSpeechSynthesis.CUID; for (int i = 0; ; ++i) { // 音声合成エンジンを取得する sts = session.QueryImpl(inDesc, i, out outDesc); if (sts < pxcmStatus.PXCM_STATUS_NO_ERROR) { break; } // 音声合成エンジン名称を表示する TextDesc.Text += "\t" + outDesc.friendlyName + "\n"; // 最初の音声合成エンジンを使う if (i == 0) { desc = outDesc; } } // 音声合成エンジンオブジェクトを作成する sts = session.CreateImpl <PXCMSpeechSynthesis>(desc, out synthesis); if (sts < pxcmStatus.PXCM_STATUS_NO_ERROR) { throw new Exception("音声合成エンジンオブジェクトの作成に失敗しました"); } // 対応言語を列挙する for (int j = 0; ; ++j) { // 音声合成エンジンが持っているプロファイルを取得する PXCMSpeechSynthesis.ProfileInfo pinfo; sts = synthesis.QueryProfile(j, out pinfo); if (sts < pxcmStatus.PXCM_STATUS_NO_ERROR) { break; } // 対応言語を表示する TextDesc.Text += "\t\t" + LanguageToString(pinfo.language) + "\n"; // 英語のエンジンを使う(日本語対応時には日本語に変更する) if (pinfo.language == PXCMSpeechSynthesis.LanguageType.LANGUAGE_US_ENGLISH) { profile = pinfo; } } if (profile == null) { throw new Exception("選択した音声合成エンジンが見つかりませんでした"); } // 音声合成時のパラメーターを設定する profile.volume = 80; profile.pitch = 100; profile.rate = 100; // 使用する言語を設定する sts = synthesis.SetProfile(profile); if (sts < pxcmStatus.PXCM_STATUS_NO_ERROR) { throw new Exception("音声合成エンジンオブジェクトの設定に失敗しました"); } }
// 音声合成を初期化する private void InitializeSpeechSynthesis() { pxcmStatus sts; var session = senseManager.QuerySession(); // 音声合成エンジンを列挙する TextDesc.Text += "音声合成エンジン\n"; PXCMSession.ImplDesc inDesc = new PXCMSession.ImplDesc(); PXCMSession.ImplDesc outDesc = null; PXCMSession.ImplDesc desc = null; inDesc.cuids[0] = PXCMSpeechSynthesis.CUID; for ( int i = 0; ; ++i ) { // 音声合成エンジンを取得する sts = session.QueryImpl( inDesc, i, out outDesc ); if ( sts < pxcmStatus.PXCM_STATUS_NO_ERROR ) { break; } // 音声合成エンジン名称を表示する TextDesc.Text += "\t" + outDesc.friendlyName + "\n"; // 最初の音声合成エンジンを使う if ( i== 0 ) { desc = outDesc; } } // 音声合成エンジンオブジェクトを作成する sts = session.CreateImpl<PXCMSpeechSynthesis>( desc, out synthesis ); if ( sts < pxcmStatus.PXCM_STATUS_NO_ERROR ) { throw new Exception( "音声合成エンジンオブジェクトの作成に失敗しました" ); } // 対応言語を列挙する for ( int j = 0; ; ++j ) { // 音声合成エンジンが持っているプロファイルを取得する PXCMSpeechSynthesis.ProfileInfo pinfo; sts = synthesis.QueryProfile( j, out pinfo ); if ( sts < pxcmStatus.PXCM_STATUS_NO_ERROR ) { break; } // 対応言語を表示する TextDesc.Text += "\t\t" + LanguageToString( pinfo.language ) + "\n"; // 英語のエンジンを使う(日本語対応時には日本語に変更する) if ( pinfo.language == PXCMSpeechSynthesis.LanguageType.LANGUAGE_US_ENGLISH ) { profile = pinfo; } } if ( profile == null ) { throw new Exception( "選択した音声合成エンジンが見つかりませんでした" ); } // 音声合成時のパラメーターを設定する profile.volume = 80; profile.pitch = 100; profile.rate = 100; // 使用する言語を設定する sts = synthesis.SetProfile( profile ); if ( sts < pxcmStatus.PXCM_STATUS_NO_ERROR ) { throw new Exception( "音声合成エンジンオブジェクトの設定に失敗しました" ); } }