- [HttpPost]
- [ActionName("Callback")]
- public ActionResult Post(string msg_signature, string timestamp, string nonce)
- {
- try
- {
- string obj = wx.GetMsgStr(Request.InputStream, msg_signature, timestamp, nonce);
- ReceiveMsg obj = ReceiveMsg.GetMsgObj(msg.Text);
- if (obj != null)
- {
- WeChat wx = WXClient.GetWXAPI();
- var resStr = string.Empty;
- switch (obj.MsgType)
- {
- case "text":
- RceMsgText ttobj = (RceMsgText)obj;
- TextToVoice.Send(ttobj);
- break;
- case "voice":
- RceMsgVoice rmvobj = (RceMsgVoice)obj;
- VoiceToText.Send(rmvobj);
- break;
- }
- }
- catch (Exception ex)
- {
- fileLog.Error(ex.Message);
- fileLog.Error(ex.StackTrace);
- fileLog.Error(ex.ToString());
- }
- return Content(null);
- }
- /// <summary>
- /// 处理发送的消息
- /// </summary>
- /// <param name="obj"> 发送消息 </param>
- public static void Send(RceMsgText obj)
- {
- // 设置 APPID/AK/SK
- var APP_ID = "你的 xxx";
- var API_KEY = "你的 xxx";
- var SECRET_KEY = "你的 xxx";
- //1. 调用百度语音合成接口, 生成音频文件 mp3
- var client = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
- // 可选参数
- var option = new Dictionary<string, object>()
- {
- {"spd", 5}, // 语速
- {"vol", 7}, // 音量
- {"per", 1} // 发音人, 4: 情感度丫丫童声
- };
- string name = DateTime.Now.ToString("yyyyMMddhhmmssttt");
- var result = client.Synthesis(obj.Content, option);
- if (result.ErrorCode == 0) // 或 result.Success
- {
- File.WriteAllBytes(@"D:\amr\ffmpeg\mp3\" + name + ".mp3", result.Data);
- //mp3 转 amr
- //ffmpeg -i 5.mp3 -ar 8000 -ab 12.2k -ac 1 6.amr
- VideoConvertFlv(@"D:\amr\ffmpeg\mp3\" + name + ".mp3", @"D:\amr\ffmpeg\amr\" + name + ".amr");
- //amr 上传到微信临时素材
- WeChat wc = new WeChat(WeChatParameter.CorpID, WeChatParameter.Secret, WeChatParameter.AgentID);
- UploaMedia media = wc.mediaTemp(wc.GetAccessTokenVal(), "voice", @"D:\amr\ffmpeg\amr\" + name + ".amr");
- if (media != null && media.errcode == 0)
- {
- // 发送临时素材
- string res = wc.SendVoice(wc.GetAccessTokenVal(), obj.FromUserName, "","", obj.AgentID, media.media_id, "0");
- }
- }
- }
- public static void VideoConvertFlv(string FromName, string ExportName)
- {
- string ffmpeg = @"D:\amr\ffmpeg\ffmpeg.exe";
- //FromName = "";
- //ExportName = "";
- string Command = "-i" + FromName + "-ar 8000 -ab 12.2k -ac 1" + ExportName; //Flv 格式
- //string Command = "-i \"test.wmv\"-y -ab 32 -ar 22050 -b 800000 -s 320*240 \"2.flv\"";
- //string Command = "E:\\FFmpeg\\ffmpeg.exe -i E:\\ClibDemo\\VideoPath\\admin\\a.wmv -y -ab 56 -ar 22050 -b 500 -r 15 -s 320*240" ExportName;
- System.Diagnostics.Process p = new System.Diagnostics.Process();
- p.StartInfo.FileName = ffmpeg;
- p.StartInfo.Arguments = Command;
- p.StartInfo.WorkingDirectory = @"D:\amr\ffmpeg\";
- p.StartInfo.UseShellExecute = false;
- p.StartInfo.RedirectStandardInput = true;
- p.StartInfo.RedirectStandardOutput = true;
- p.StartInfo.RedirectStandardError = true;
- p.StartInfo.CreateNoWindow = false;
- // 开始执行
- p.Start();
- p.BeginErrorReadLine();
- p.WaitForExit();
- p.Close();
- p.Dispose();
- }
- public static void Send(RceMsgVoice obj)
- {
- string returnText = string.Empty;
- // 组装下载链接
- string downloadurl = string.Format("https://qyapi.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", wx.GetAccessTokenVal(), obj.MediaId);
- System.Net.webClient _WebClient = new System.Net.WebClient();
- _WebClient.DownloadFile(downloadurl, @"D:\amr\" + obj.MediaId + ".amr");
- // 设置 APPID/AK/SK
- var APP_ID = "11059149";
- var API_KEY = "0i6s4Z7Rj4HVwYSi324mXhN1";
- var SECRET_KEY = "InmF5wDHuQl7gyLbMc7hNuyiM3rWt5Vf";
- var client = new Baidu.Aip.Speech.Asr(API_KEY, SECRET_KEY);
- var data = File.ReadAllBytes(@"D:\amr\" + obj.MediaId + ".amr");
- JObject mObj = client.Recognize(data, "amr", 8000);
- int id = Convert.ToInt32(mObj["err_no"]);
- string err_msg = mObj["err_msg"].ToString();
- string result = string.Empty;
- if (mObj["result"] != null)
- {
- JToken arr = mObj["result"];// 获取 Json 里的数组 {arr:[{yy:1,zz:2},{yy:3,zz:4}]}
- foreach (JToken baseJ in arr)// 遍历数组
- {
- result = baseJ.Value<string>();
- }
- }
- if (mObj != null && id == 0)
- {
- returnText = result;
- }
- else
- {
- returnText = err_msg;
- }
- // 发送消息
- wx.SendText(wx.GetAccessTokenVal(), obj.FromUserName, "","", obj.AgentID, returnText, "0");
- }
来源: http://www.bubuko.com/infodetail-2572059.html