Пример #1
0
    IEnumerator Recognition(AudioClip clip2Send)
    {
        float[] sample = new float[recordClip.samples];
        recordClip.GetData(sample, 0);
        short[] intData  = new short[sample.Length];
        byte[]  byteData = new byte[intData.Length * 2];

        for (int i = 0; i < sample.Length; i++)
        {
            intData[i] = (short)(sample[i] * short.MaxValue);
        }

        Buffer.BlockCopy(intData, 0, byteData, 0, byteData.Length);

        var result   = aipClient.Recognize(byteData, "pcm", 16000);
        var speaking = result.GetValue("result");

        if (speaking == null)
        {
            SetRecognizeText(TipsReference.NOTHING_RECORD);
            StopAllCoroutines();
            yield return(null);
        }

        string usefulText = speaking.First.ToString();

        SetRecognizeText(usefulText);

        yield return(0);
    }
Пример #2
0
        // 识别本地文件
        public string AsrData(string fileFullName)
        {
            var data   = File.ReadAllBytes(fileFullName);
            var result = _asrClient.Recognize(data, "pcm", 16000);

            return(result.ToString());
        }
Пример #3
0
        // 识别本地文件
        public string AsrData(string pcmFilePath)
        {
            var data   = File.ReadAllBytes(pcmFilePath);
            var result = _asrClient.Recognize(data, "pcm", 16000);

            return(result.ToString());
        }
Пример #4
0
    private void OnClickStopButton()
    {
        StartButton.gameObject.SetActive(false);
        StopButton.gameObject.SetActive(false);
        DescriptionText.text = "转换中...";
        Microphone.End(null);                                //清空

        var data = Asr.ConvertAudioClipToPCM16(_clipRecord); //转换成byte数据

        //将byte传入 然后转换
        StartCoroutine(_asr.Recognize(data, s =>
        {
            //转换回掉函数 文本=转换结果不为空且结果长度大于0 否则为“未识别声音”
            if (s.result == null)
            {
                DescriptionText.text = "未识别到声音";
                StartButton.gameObject.SetActive(true);
            }

            else
            {
                RecognitionResult(s.result[0]);
            }
        }));
    }
Пример #5
0
    public void StopAndGetResult()
    {
        string result = "";

        Microphone.End(null);
        var data = Asr.ConvertAudioClipToPCM16(_clipRecord);

        StartCoroutine(_asr.Recognize(data, s =>
        {
            result      = s.result != null && s.result.Length > 0 ? s.result[0] : "未识别到声音";
            lastContent = result;
            if (Eve解析完成 != null && result != "未识别到声音")
            {
                Eve解析完成(result);
            }
            else if (Eve未检测到声音 != null && result == "未识别到声音")
            {
                Eve未检测到声音();
            }
            //Debug.Log("结束录音:" + result);
        }));
        if (Eve结束录音 != null)
        {
            Eve结束录音();
        }
    }
Пример #6
0
        // 识别本地文件
        public void AsrData()
        {
            var data   = File.ReadAllBytes("语音pcm文件地址");
            var result = _asrClient.Recognize(data, "pcm", 16000);

            Console.Write(result);
        }
Пример #7
0
        // 识别本地文件
        static public void AsrData()
        {
            var data   = File.ReadAllBytes(@"H:\yank\企业管理系统V1.0\Web\AI\test\16k.wav");
            var result = client.Recognize(data, "pcm", 16000);

            Console.Write(result);
        }
Пример #8
0
 //语音识别
 public void recoVideo()
 {
     Thread.Sleep(2000);
     if (client == null)
     {
         var API_KEY    = "uz804M95AKkq5OffLCB9GD3q";
         var SECRET_KEY = "IZxCofo7vFRYiPKhXqdmh2Da51MrhDKA";
         client = new Baidu.Aip.Speech.Asr(API_KEY, SECRET_KEY);
     }
     for (int i = 1; i < number; i++)
     {
         try {
             var data = FileUtil.getFileVideo(videoPath, i + ".pcm");
             client.Timeout = 12000; // 若语音较长,建议设置更大的超时时间. ms
             var result = client.Recognize(data, "pcm", 16000, dic);
             if (result["result"] != null)
             {
                 String value = result["result"][0].ToString();
                 tranText(value, i, captionDic);
             }
         }
         catch (Exception e) {
             Console.WriteLine(e.Message);
             tranText(e.Message, i, captionDic);
         }
     }
 }
Пример #9
0
        // 识别本地文件
        public static AsrResult AsrData(string path)
        {
            var data   = File.ReadAllBytes(path);
            var result = AsrClient.Recognize(data, "pcm", 8000);

            return(result.ToObject <AsrResult>());
        }
Пример #10
0
        // 识别本地文件
        public void AsrData(string filePath)
        {
            var data   = File.ReadAllBytes(filePath);
            var result = _asrClient.Recognize(data, "pcm", 16000);

            Console.Write(result);
        }
Пример #11
0
        // 识别本地文件
        /// <summary>
        ///
        /// </summary>
        /// <param name="filePath">文件地址</param>
        /// <param name="fileType">文件类型</param>
        /// <param name="rate">采样率</param>
        /// <param name="lan">识别语言,默认lan=zh,设置为lan=en后,返回结果一定为英文</param>
        public List <string> AsrData(string filePath, string fileType, int rate, string lan)
        {
            var data = File.ReadAllBytes(filePath);
            Dictionary <string, object> para = new Dictionary <string, object>();

            para.Add("lan", lan);
            if ("pcm".Equals(fileType) || "wav".Equals(fileType))
            {
                string        API_KEY    = "PhUlgrvjGmIaSuPAvn5CWbAE";
                string        SECRET_KEY = "fDZXemDEyPc6dcAfT8YxkgQuN29kVjwC";
                Asr           asr        = new Asr(API_KEY, SECRET_KEY);
                JObject       result     = asr.Recognize(data, fileType, rate, para);
                List <string> res        = new List <string>();
                if ("0".Equals(result["err_no"].ToString()))
                {
                    JArray jaResult = JArray.Parse(result["result"].ToString());
                    foreach (JToken jt in jaResult)
                    {
                        res.Add(jt.ToString());
                    }
                }
                return(res);
            }
            else
            {
                return(null);
            }
        }
Пример #12
0
        private void btn_Recognize_Click(object sender, EventArgs e)
        {
            string  fileName = "ffmpeg.exe";
            Process p        = new Process();

            p.StartInfo.UseShellExecute        = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName       = fileName;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.Arguments      = "-i " + txt_AudioFile.Text + " -y -ar 16000 -ac 1 -acodec pcm_s16le input.wav";//参数以空格分隔,如果某个参数为空,可以传入””
            p.Start();
            p.WaitForExit();
            var data = File.ReadAllBytes("input.wav");

            File.Delete("input.wav");
            var result = _asrClient.Recognize(data, "pcm", 16000);

            Console.Write(result);
            if (result["err_msg"].ToString() == "success.")
            {
                rtb_textOut.Text = result["result"].ToString().Replace("[", "").Replace("]", "").Replace("\"", "").Trim();
                rtb_SendMsg.Text = rtb_textOut.Text;
                message_bar.Text = "识别成功";
            }
            else
            {
                message_bar.Text       = "识别失败";
                panel_sample.BackColor = Color.Red;
            }
        }
Пример #13
0
        // 识别本地文件
        public void AsrData()
        {
            var data   = File.ReadAllBytes(@"C:\Users\hym\Downloads\aip-speech-csharp-sdk-1.0.0\Speech\re.txt");
            var result = _asrClient.Recognize(data, "pcm", 16000);

            Console.Write(result);
        }
Пример #14
0
        /// <summary>
        /// 开始识别按钮
        ///
        /// dev_pid 可选参数
        /// 1536    普通话(支持简单的英文识别)  搜索模型 无标点 支持自定义词库 http://vop.baidu.com/server_api
        /// 1537    普通话(纯中文识别)  输入法模型 有标点 不支持自定义词库 http://vop.baidu.com/server_api
        /// 1737    英语 无标点 不支持自定义词库 http://vop.baidu.com/server_api
        /// 1637    粤语 有标点 不支持自定义词库 http://vop.baidu.com/server_api
        /// 1837    四川话 有标点 不支持自定义词库 http://vop.baidu.com/server_api
        /// 1936    普通话远场 远场模型    有标点 不支持自定义词库    http://vop.baidu.com/server_api
        /// 80001语音识别极速版(收费)
        /// 80001   普通话 极速版输入法模型    有标点 支持自定义词库 http://vop.baidu.com/pro_api
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            var type     = videoType.Text;
            var filePath = this.filePath.Text;

            //设置语音识别应用的账号信息(百度智能云管理中心) APP_ID/API_KEY/SECRET_KEY
            //demo里的账号
            //var APP_ID = "14433392";
            //var API_KEY = "C7WMYgLeWv3Wm2yogwv5gD08";
            //var SECRET_KEY = "xcvwiwikALBDBaIcGisNQ6aQImtj3qua";
            //请更改成自己的账号
            string APP_ID     = "16982575";
            string API_KEY    = "0kC4dDwWl3hqo2xz2c4113ZP";
            string SECRET_KEY = "8aneCyn9KVAWjGKAIfpcr3vMCFt19kIb";

            var client = new Asr(APP_ID, API_KEY, SECRET_KEY);

            client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms

            // 可选参数
            var options = new Dictionary <string, object>
            {
                { "dev_pid", 1536 }
            };

            var result = client.Recognize(File.ReadAllBytes(filePath), type.TrimStart('.'), 16000, options);

            voiceResult.Text = Convert.ToString(result);
            result.TryGetValue("result", out JToken resultStr);
            if (Convert.ToString(resultStr) != "")
            {
                voiceResult.Text = Convert.ToString(resultStr);
            }
        }
Пример #15
0
        // 识别本地文件
        public void AsrData()
        {
            var data   = System.IO.File.ReadAllBytes(@"C:\Users\Admin\Source\Repos\TTS\AAI.WEB\App_LocalResources\2017年8月8日 16_49_17.wav");
            var result = _asrClient.Recognize(data, "wav", 8000);

            Response.Write(result);
        }
Пример #16
0
 // 识别本地文件
 public async Task <string> AsrData(string fileUrl)
 {
     return
         (await Task.Run(() =>
     {
         var data = File.ReadAllBytes(fileUrl);
         var result = _asrClient.Recognize(data, "pcm", 8000);
         return JsonConvert.DeserializeObject <string[]>(result["result"].ToString())[0];
     }));
 }
Пример #17
0
        private JObject Baidu_RecognizeByAPI(string filePhysicsPath, bool isEn)
        {
            Asr _asrClient = new Asr("TmZSp2x7nZXlPIW6GapK45XG", "BuWaLotBu4ho1GnblaMbue3ppryGuOYG ");
            var data       = File.ReadAllBytes(filePhysicsPath);
            Dictionary <string, object> dic = new Dictionary <string, object>();

            dic.Add("lan", "en");
            var result = _asrClient.Recognize(data, "WAV", 8000, dic);

            return(result);
        }
Пример #18
0
        public string Recognition(byte[] data)
        {
            // 可选参数
            var options = new Dictionary <string, object>
            {
                { "dev_pid", 1536 }
            };

            client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
            var result = client.Recognize(data, "pcm", 16000, options);

            return(result.ToString());
        }
Пример #19
0
        public SpeechRecRes SpeechRec(byte[] data)
        {
            SpeechRecRes res = null;

            if (data != null)
            {
                JObject result = _asr.Recognize(data, _speechFormat, 16000);

                res = result?.ToObject <SpeechRecRes>();
            }

            return(res);
        }
Пример #20
0
 /// <summary>
 /// 通过文件路径,调用百度语音识别接口返回识别结果
 /// </summary>
 /// <param name="filePath">文件路径</param>
 /// <param name="audioFormat">音频格式</param>
 /// <returns></returns>
 public static JObject AsrData(string filePath, string audioFormat)
 {
     try
     {
         var data = File.ReadAllBytes(filePath);
         _asrClient.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
         var result = _asrClient.Recognize(data, audioFormat, 16000);
         return(result);
     }
     catch (Exception ex)
     {
         throw (ex);
     }
 }
Пример #21
0
    private void OnClickStopButton()
    {
        StartButton.gameObject.SetActive(false);
        StopButton.gameObject.SetActive(false);
        DescriptionText.text = "Recognizing...";
        Microphone.End(null);

        var data = Asr.ConvertAudioClipToPCM16(_clipRecord);

        StartCoroutine(_asr.Recognize(data, s =>
        {
            message            = s.result != null && s.result.Length > 0 ? s.result[0] : "未识别到声音";
            char[] messageChar = message.ToCharArray();
            int temporary      = 1;
            int chamber        = ToDigit(messageChar[(message.IndexOf("病房") - temporary)]);
            for (temporary = 1; temporary < message.IndexOf("病房");)
            { //如病房前面还有字 第六个病房 etc. 接着往前找
                if (chamber == 0)
                {
                    chamber = ToDigit(message[(message.IndexOf("病房") - (++temporary))]);
                }
                else if (chamber != 0)
                {//找到了
                    break;
                }
            }
            message2 = s.result != null && s.result.Length > 0 ? s.result[0] : "未识别到声音";
            //0none,1开灯2关灯3消毒4通风
            int operate       = 0;
            string[] operates = { "", "开灯", "关灯", "消毒", "通风" };
            for (int i = 1; i <= 4;)
            {
                int t = message2.IndexOf(operates[i]);
                if (t == (-1))
                {
                    i++;
                }
                else
                {
                    operate = i;
                    break;
                }
            }//用indexof寻找关键字,没找到返回-1 找到了赋给operate
            // chamber 1,2,3,4,5,6,7,8
            // operate 1,2,3,4
            DescriptionText.text = chamber.ToString() + "," + operate;
            StartButton.gameObject.SetActive(true);
        }));
    }
        private void StopRecording()
        {
            //此时判断是否处于说话状态,如果是说话状态则将按钮复位,并上传说话内容
            if (StartSpeech)
            {
                //上传内容
                Log.Debug("麦克风停止录音");
                Microphone.End(null);
                //转换格式
                var data = Asr.ConvertAudioClipToPCM16(clipRecord);
                asr.Recognize(data, s =>
                {
                    Log.Debug("进来了");
                    if (s.result == null && s.result.Length < 0)
                    {
                        Log.Debug("结果为空,表示麦克风未识别到声音");
                        //提示有问题,复位
                        entry2.callback.AddListener(N);
                        StartSpeech = false;
                    }
                    else
                    {
                        //有结果,发送给机器人进行语音回复
                        tts.Synthesis(s.result[0], r =>
                        {
                            if (r.Success)
                            {
                                //正常播放
                                Log.Debug("合成成功,正在播放,声音有几秒:" + audioSource.clip.length);
                                audioSource.clip = r.clip;
                                audioSource.Play();
                                //复位
                                entry2.callback.AddListener(N);
                                StartSpeech = false;
                            }
                            else
                            {
                                //这是出问题了
                                Debug.Log(s.err_msg);
                                //提示有问题,复位
                                entry2.callback.AddListener(N);
                                StartSpeech = false;
                            }
                        });
                    }

                });
            }
        }
Пример #23
0
    private void OnClickStopButton()
    {
        StartButton.gameObject.SetActive(false);
        StopButton.gameObject.SetActive(false);
        DescriptionText.text = "Recognizing...";
        Microphone.End(null);
        Debug.Log("end record");
        var data = Asr.ConvertAudioClipToPCM16(_clipRecord);

        StartCoroutine(_asr.Recognize(data, s =>
        {
            DescriptionText.text = s.result[0];
            StartButton.gameObject.SetActive(true);
        }));
    }
Пример #24
0
    private void OnClickStopButton()
    {
        StartButton.gameObject.SetActive(false);
        StopButton.gameObject.SetActive(false);
        DescriptionText.text = "Recognizing...";
        Microphone.End(null);
        Debug.Log("[WitBaiduAip demo]end record");
        var data = Asr.ConvertAudioClipToPCM16(_clipRecord);

        ReplayButton.gameObject.SetActive(true);
        StartCoroutine(_asr.Recognize(data, s =>
        {
            DescriptionText.text = s.result != null && s.result.Length > 0 ? s.result[0] : "未识别到声音";

            StartButton.gameObject.SetActive(true);
        }));
    }
Пример #25
0
        public static string GetText(string filename)
        {
            if (File.Exists(filename) == false)
            {
                return(null);
            }

            var data = File.ReadAllBytes(filename);

            client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
            Dictionary <string, object> dic = new Dictionary <string, object>();

            dic.Add("dev_pid", 1737);
            var result = client.Recognize(data, "wav", 16000, dic);

            return(result["result"][0].ToString());
        }
Пример #26
0
        public static string GetSpeechString(byte[] data)
        {
            // 设置APPID/AK/SK
            string APP_ID     = "16787165";
            string API_KEY    = "k7s2FUxEx2xuVFy6B0VKRH5C";
            string SECRET_KEY = "no8gKK05u6Hs2FVCuTGDrXPVYEXM1EpA ";
            var    client     = new Asr(APP_ID, API_KEY, SECRET_KEY);
            // 可选参数
            var options = new Dictionary <string, object>
            {
                { "dev_pid", 1536 }
            };

            client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
            var result = client.Recognize(data, "wav", 16000, options).ToObject <BaiduSpeechResult>();

            return(result.result.FirstOrDefault());
        }
Пример #27
0
    IEnumerator Timer()
    {
        while (true)
        {
            yield return(new WaitForSeconds(inteval));

            Microphone.End(null);
//            print(_clipRecord.length);
            updateClips();
            AudioClip currentClip = AudioClipHelper.Combine((AudioClip[])_audioClips.ToArray(typeof(AudioClip)));
//            AudioClip currentClip = AudioClipHelper.Combine(_audioClips);
//            AudioClip currentClip = (AudioClip) _audioClips[0];
            var data = Asr.ConvertAudioClipToPCM16(currentClip);
            StartCoroutine(_asr.Recognize(data, s =>
            {
                String text = s.result != null && s.result.Length > 0 ? s.result[0] : "未识别到声音";
                Debug.Log(DateTime.Now + ":" + text);
            }));
        }
    }
Пример #28
0
        //语音识别
        private void button4_Click(object sender, EventArgs e)
        {
            //设置语音识别应用的账号信息(百度智能云管理中心) APP_ID/API_KEY/SECRET_KEY
            //demo里的账号
            //var APP_ID = "14433392";
            //var API_KEY = "C7WMYgLeWv3Wm2yogwv5gD08";
            //var SECRET_KEY = "xcvwiwikALBDBaIcGisNQ6aQImtj3qua";
            //请更改成自己的账号
            string APP_ID = "16982575";
            string API_KEY = "0kC4dDwWl3hqo2xz2c4113ZP";
            string SECRET_KEY = "8aneCyn9KVAWjGKAIfpcr3vMCFt19kIb";

            var client = new Asr(APP_ID, API_KEY, SECRET_KEY);

            var videoPath = comboBox4.Text;
            var type = Path.GetExtension(videoPath);
            var data = File.ReadAllBytes(videoPath);

            //dev_pid 可选参数
            //1536    普通话(支持简单的英文识别)  搜索模型 无标点 支持自定义词库 http://vop.baidu.com/server_api
            //1537    普通话(纯中文识别)  输入法模型 有标点 不支持自定义词库 http://vop.baidu.com/server_api
            //1737    英语 无标点 不支持自定义词库 http://vop.baidu.com/server_api
            //1637    粤语 有标点 不支持自定义词库 http://vop.baidu.com/server_api
            //1837    四川话 有标点 不支持自定义词库 http://vop.baidu.com/server_api
            //1936    普通话远场 远场模型    有标点 不支持自定义词库    http://vop.baidu.com/server_api
            //80001语音识别极速版(收费)
            //80001   普通话 极速版输入法模型    有标点 支持自定义词库 http://vop.baidu.com/pro_api
            var options = new Dictionary<string, object>
                 {
                    {"dev_pid", 1536}
                 };
            client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
            var result = client.Recognize(data, type.TrimStart('.'), 16000, options);
            comboBox9.Text = Convert.ToString(result);
            result.TryGetValue("result", out JToken resultStr);
            if (Convert.ToString(resultStr) != "")
            {
                comboBox9.Text = Convert.ToString(resultStr);
            }
        }
Пример #29
0
        /// <summary>
        /// 音频文件转语音
        /// </summary>
        /// <param name="filepath"></param>
        /// <returns></returns>
        public static string BaiduTranslateToText(string filepath, string language, string para_HZ)
        {
            string returnStr = "";

            if (string.IsNullOrEmpty(filepath))
            {
                returnStr = "文件不存在";
            }
            else
            {
                string     format = Path.GetExtension(filepath).Substring(1);
                int        rate   = int.Parse(para_HZ);
                string     cuid   = para_API_id;
                FileStream fs     = new FileStream(filepath, FileMode.Open);
                byte[]     voice  = new byte[fs.Length];
                fs.Read(voice, 0, voice.Length);
                fs.Close();
                Dictionary <string, object> options = new Dictionary <string, object>();
                if (language == "zh")
                {
                    options.Add("dev_pid", 1536);
                }
                else
                {
                    options.Add("dev_pid", 1737);
                }
                Asr     asr    = new Asr(Api_Key, Secret_Key);
                var     result = asr.Recognize(voice, format, rate, options);
                JObject obj    = JObject.Parse(Newtonsoft.Json.JsonConvert.SerializeObject(result));
                if (obj["err_msg"].Value <string>() == "success.")
                {
                    returnStr = obj["result"][0].ToString();
                }
                else
                {
                    returnStr = "3301-百度语音转文字出错";
                }
            }
            return(returnStr);
        }
Пример #30
0
        public string Baidu_RecognizeByAPI(string filePhysicsPath)
        {
            new FFmpegSerializeOperator().ConvertToAmr(Parameters.CurrentDirectory, filePhysicsPath, filePhysicsPath);
            Asr _asrClient = new Asr("TmZSp2x7nZXlPIW6GapK45XG", "BuWaLotBu4ho1GnblaMbue3ppryGuOYG ");
            var data       = File.ReadAllBytes(filePhysicsPath);
            Dictionary <string, object> dic = new Dictionary <string, object>();

            dic.Add("lan", "en");
            var    result  = _asrClient.Recognize(data, "WAV", 8000);
            string err_msg = result.GetValue("err_msg").ToString();
            string content = string.Empty;

            if (string.Equals(err_msg, "success."))
            {
                content = result.GetValue("result").ToString();
            }
            if (!string.Equals("success.", err_msg) || content.Split('"').Length >= 5)
            {
                result = Baidu_RecognizeByAPI(filePhysicsPath, true);
            }
            return(result.GetValue("result").ToString());
        }