Esempio n. 1
0
        public static string CloudRecogFreeTalk(byte[] data, int data_len)
        {
            byte[] data1 = new byte[data_len];
            Array.Copy((Array)data, (Array)data1, data_len);
            string str = "";
            AsrVoiceCheckResult check_result = new AsrVoiceCheckResult();
            string config1 = "vadhead=10000,vadtail=500,audioFormat=pcm16k16bit";

            ASR_Recog.VoiceCheck(ASR_Recog.session_id_novad, data1, data_len, ref check_result, config1);
            if (check_result.eStatus != AsrVoiceCheckStatus.VAD_VOICE_END)
            {
                return(str);
            }
            byte[] voice_data1 = new byte[ASR_Recog.cur_len];
            Array.Copy((Array)ASR_Recog.vad_check_audiodata, (Array)voice_data1, ASR_Recog.cur_len);
            ASR_Recog.cur_len = 0;
            string         config2       = "addPunc=yes,realtime=yes,vadhead=20000,vadtail=600,";
            AsrRecogResult result        = new AsrRecogResult();
            HciErrorCode   hciErrorCode1 = HciCloudAsr.HciAsrRecog(ASR_Recog.session_id_novad, ref voice_data1, config2, (string)null, ref result);

            if (hciErrorCode1 == HciErrorCode.HCI_ERR_NONE)
            {
                Console.WriteLine("HciCloudAsr HciAsrRecog Success");
                Console.WriteLine("psResultItemList count " + (object)result.psResultItemList.Count);
                foreach (AsrRecogResultItem asrRecogResultItem in (IEnumerable <AsrRecogResultItem>)result.psResultItemList)
                {
                    Console.WriteLine("pszResult: " + asrRecogResultItem.pszResult);
                    str = str + asrRecogResultItem.pszResult;
                }
            }
            else
            {
                Console.WriteLine("HciCloudAsr HciAsrRecog 出错: " + (object)hciErrorCode1);
            }
            byte[]       voice_data2   = (byte[])null;
            HciErrorCode hciErrorCode2 = HciCloudAsr.HciAsrRecog(ASR_Recog.session_id_novad, ref voice_data2, config2, (string)null, ref result);

            if (hciErrorCode2 == HciErrorCode.HCI_ERR_NONE)
            {
                Console.WriteLine("HciCloudAsr HciAsrRecog Success");
                Console.WriteLine("psResultItemList count " + (object)result.psResultItemList.Count);
                foreach (AsrRecogResultItem asrRecogResultItem in (IEnumerable <AsrRecogResultItem>)result.psResultItemList)
                {
                    Console.WriteLine("pszResult: " + asrRecogResultItem.pszResult);
                    str = str + asrRecogResultItem.pszResult;
                }
                return(str);
            }
            else
            {
                Console.WriteLine("HciCloudAsr HciAsrRecog 出错: " + (object)hciErrorCode2);
                return(str);
            }
        }
Esempio n. 2
0
        public static void CloudRealtimeRecogFreeTalk(string audio_file_path)
        {
            HciErrorCode hciErrorCode = HciErrorCode.HCI_ERR_UNKNOWN;
            FileStream   fileStream   = File.OpenRead(audio_file_path);
            long         length1      = 1024L;
            long         num1         = 0L;
            long         length2      = fileStream.Length;

            byte[]         voice_data = new byte[length1];
            string         config     = (string)null;
            AsrRecogResult result     = new AsrRecogResult();

            while (num1 + length1 < length2)
            {
                long num2 = length2 - num1 < length1 ? length2 - num1 : length1;
                fileStream.Read(voice_data, 0, (int)num2);
                hciErrorCode = HciCloudAsr.HciAsrRecog(ASR_Recog.session_id_, ref voice_data, config, (string)null, ref result);
                switch (hciErrorCode)
                {
                case HciErrorCode.HCI_ERR_ASR_REALTIME_WAITING:
                    num1 += num2;
                    continue;

                case HciErrorCode.HCI_ERR_ASR_REALTIME_END:
                    goto label_5;

                default:
                    Console.WriteLine("hci_asr_recog failed with " + (object)hciErrorCode);
                    goto label_5;
                }
            }
label_5:
            if (hciErrorCode == HciErrorCode.HCI_ERR_ASR_REALTIME_WAITING || hciErrorCode == HciErrorCode.HCI_ERR_ASR_REALTIME_END)
            {
                voice_data   = (byte[])null;
                hciErrorCode = HciCloudAsr.HciAsrRecog(ASR_Recog.session_id_, ref voice_data, config, (string)null, ref result);
            }
            if (hciErrorCode == HciErrorCode.HCI_ERR_NONE)
            {
                Console.WriteLine("HciCloudAsr HciAsrRecog Success");
                Console.WriteLine("psResultItemList count " + (object)result.psResultItemList.Count);
                foreach (AsrRecogResultItem asrRecogResultItem in (IEnumerable <AsrRecogResultItem>)result.psResultItemList)
                {
                    Console.WriteLine("pszResult: " + asrRecogResultItem.pszResult);
                }
            }
            else
            {
                Console.WriteLine("HciCloudAsr HciAsrRecog 出错: " + (object)hciErrorCode);
            }
        }
Esempio n. 3
0
        public static string RealtimeRecog(byte[] data, int data_len, out int ASRRealTimeEnd)
        {
            HciErrorCode hciErrorCode = HciErrorCode.HCI_ERR_UNKNOWN;
            string       text         = "";

            byte[] destinationArray = new byte[data_len];
            Array.Copy(data, destinationArray, data_len);
            string         config         = "addPunc=" + ASR_Recog.addpunc_;
            AsrRecogResult asrRecogResult = default(AsrRecogResult);

            hciErrorCode = HciCloudAsr.HciAsrRecog(ASR_Recog.session_id_, ref destinationArray, config, null, ref asrRecogResult);
            bool flag = hciErrorCode != HciErrorCode.HCI_ERR_ASR_REALTIME_WAITING;

            if (flag)
            {
                bool flag2 = hciErrorCode == HciErrorCode.HCI_ERR_ASR_REALTIME_END;
                if (flag2)
                {
                    Console.WriteLine("HciCloudAsr HciAsrRecog Success");
                }
                else
                {
                    Console.WriteLine("hci_asr_recog failed with " + hciErrorCode);
                }
            }
            bool flag3 = asrRecogResult.psResultItemList != null && ASR_Recog.realtime_ == "rt";

            if (flag3)
            {
                Console.WriteLine("--- psResultItemList count " + asrRecogResult.psResultItemList.Count);
                foreach (AsrRecogResultItem current in asrRecogResult.psResultItemList)
                {
                    Console.WriteLine("pszResult: " + current.pszResult);
                    text += current.pszResult;
                }
            }
            bool   flag4 = hciErrorCode == HciErrorCode.HCI_ERR_ASR_REALTIME_END;
            string result;

            if (flag4)
            {
                Console.WriteLine("test---");
                destinationArray = null;
                ASRRealTimeEnd   = 1;
                hciErrorCode     = HciCloudAsr.HciAsrRecog(ASR_Recog.session_id_, ref destinationArray, config, null, ref asrRecogResult);
                bool flag5 = hciErrorCode == HciErrorCode.HCI_ERR_NONE;
                if (flag5)
                {
                    text = "";
                    Console.WriteLine("HciCloudAsr HciAsrRecog Success");
                    bool flag6 = asrRecogResult.psResultItemList != null;
                    if (flag6)
                    {
                        Console.WriteLine("psResultItemList count " + asrRecogResult.psResultItemList.Count);
                        foreach (AsrRecogResultItem current2 in asrRecogResult.psResultItemList)
                        {
                            Console.WriteLine("pszResult: " + current2.pszResult);
                            text += current2.pszResult;
                        }
                    }
                    result = text;
                    return(result);
                }
                Console.WriteLine("HciCloudAsr HciAsrRecog 出错: " + hciErrorCode);
            }
            ASRRealTimeEnd = 0;
            result         = text;
            return(result);
        }