/// <summary> /// 音声変換時のデータコールバックメソッド /// </summary> /// <param name="reason">呼び出し要因</param> /// <param name="job_id">ジョブID</param> /// <param name="tick">時刻[ms]</param> /// <param name="user_data">ユーザーデータ(SpeechJobDataへのポインタ)</param> /// <returns>ゼロを返す</returns> private static int RawBufferCallback(AitalkCore.EventReason reason, int job_id, long tick, IntPtr user_data) { GCHandle gc_handle = GCHandle.FromIntPtr(user_data); SpeechJobData job_data = gc_handle.Target as SpeechJobData; if (job_data == null) { return(0); } // 変換できた分だけGetData()で読み取ってjob_dataのバッファに格納する int buffer_capacity = job_data.BufferCapacity; byte[] buffer = new byte[2 * buffer_capacity]; AitalkCore.Result result; int read_samples; do { result = AitalkCore.GetData(job_id, buffer, buffer_capacity, out read_samples); if (result != AitalkCore.Result.Success) { break; } job_data.Output.AddRange(new ArraySegment <byte>(buffer, 0, 2 * read_samples)); }while ((buffer_capacity - 1) <= read_samples); if (reason == AitalkCore.EventReason.RawBufferClose) { job_data.CloseEvent.Set(); } return(0); }
/// <summary> /// 音声変換時のイベントコールバックメソッド /// </summary> /// <param name="reason">呼び出し要因</param> /// <param name="job_id">ジョブID</param> /// <param name="tick">時刻[ms]</param> /// <param name="name">イベントの値</param> /// <param name="user_data">ユーザーデータ(SpeechJobDataへのポインタ)</param> /// <returns>ゼロを返す</returns> private static int TtsEventCallback(AitalkCore.EventReason reason, int job_id, long tick, string name, IntPtr user_data) { GCHandle gc_handle = GCHandle.FromIntPtr(user_data); SpeechJobData job_data = gc_handle.Target as SpeechJobData; if (job_data == null) { return(0); } switch (reason) { case AitalkCore.EventReason.PhoneticLabel: case AitalkCore.EventReason.Bookmark: case AitalkCore.EventReason.AutoBookmark: job_data.EventData.Add(new TtsEventData(tick, name, reason)); break; } return(0); }
internal TtsEventData(long tick, string value, AitalkCore.EventReason reason) { Tick = tick; Value = value; switch (reason) { case AitalkCore.EventReason.PhoneticLabel: Type = "Phonetic"; break; case AitalkCore.EventReason.Bookmark: Type = "Bookmark"; break; case AitalkCore.EventReason.AutoBookmark: Type = "AutoBookmark"; break; default: Type = ""; break; } }