Beispiel #1
0
        /// <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);
        }
Beispiel #2
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);
        }
Beispiel #3
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;
                }
            }