csharp:百度语音识别

 public string API_id = "8888"; //你的ID
        public string API_record = null;
        public string API_record_format = "wav";
        public string API_record_HZ = "16000";
        public string API_key = "geovindu"; //你的KEY
        public string API_secret_key = "55519"; //你的SECRRET_KEY
        public string API_language = "zh";
        public string API_access_token = null;
        public string strJSON = "";

        //录音
        [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
        public static extern int mciSendString(
         string lpstrCommand,
         string lpstrReturnString,
         int uReturnLength,
         int hwndCallback
        );
        /// <summary>
        ///
        /// </summary>
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            API_record=Application.StartupPath + "\\上班.wav";
            API_access_token = getStrAccess(API_key, API_secret_key);

        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            this.textBox2.Text = getStrText(API_id, API_access_token, API_language, API_record, API_record_format, API_record_HZ);

        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="para_API_key">你的KEY</param>
        /// <param name="para_API_secret_key">你的SECRRET_KEY</param>
        /// <returns></returns>
        public string getStrAccess(string para_API_key, string para_API_secret_key)
        {

            //方法参数说明:
            //para_API_key:API_key(你的KEY)
            //para_API_secret_key(你的SECRRET_KEY)
            //方法返回值说明:
            //百度认证口令码,access_token
            string access_html = null;
            string access_token = null;
            string getAccessUrl = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials" +"&client_id=" + para_API_key + "&client_secret=" + para_API_secret_key;
            try
            {
                HttpWebRequest getAccessRequest = WebRequest.Create(getAccessUrl) as HttpWebRequest;
                //getAccessRequest.Proxy = null;
                getAccessRequest.ContentType = "multipart/form-data";
                getAccessRequest.Accept = "*/*";
                getAccessRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
                getAccessRequest.Timeout = 30000;//30秒连接不成功就中断
                getAccessRequest.Method = "post";
                HttpWebResponse response = getAccessRequest.GetResponse() as HttpWebResponse;
                using (StreamReader strHttpComback = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    access_html = strHttpComback.ReadToEnd();
                }
            }
            catch (WebException ex)
            {
                MessageBox.Show(ex.ToString());
            }

            JObject jo = JObject.Parse(access_html);
            access_token = jo["access_token"].ToString();//得到返回的toke
            return access_token;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="para_API_id"></param>
        /// <param name="para_API_access_token"></param>
        /// <param name="para_API_language"></param>
        /// <param name="para_API_record"></param>
        /// <param name="para_format"></param>
        /// <param name="para_Hz"></param>
        /// <returns></returns>
        public string getStrText(string para_API_id, string para_API_access_token, string para_API_language, string para_API_record, string para_format, string para_Hz)
        {
            //方法参数说明:
            //para_API_id: API_id (你的ID)
            //para_API_access_token (getStrAccess(...)方法得到的access_token口令)
            //para_API_language (你要识别的语言,zh,en,ct)
            //para_API_record(语音文件的路径)
            //para_format(语音文件的格式)
            //para_Hz(语音文件的采样率 16000或者8000) 

            //该方法返回值:
            //该方法执行正确返回值是语音翻译的文本,错误是错误号,可以去看百度语音文档,查看对应错误
            string strText = null;
            string error = null;
            FileInfo fi = new FileInfo(para_API_record);
            FileStream fs = new FileStream(para_API_record, FileMode.Open);
            byte[] voice = new byte[fs.Length];
            fs.Read(voice, 0, voice.Length);
            fs.Close(); 

            string getTextUrl = "http://vop.baidu.com/server_api?lan=" + para_API_language + "&cuid=" + para_API_id + "&token=" + para_API_access_token;
            HttpWebRequest getTextRequst = WebRequest.Create(getTextUrl) as HttpWebRequest; 

           /* getTextRequst.Proxy = null;
            getTextRequst.ServicePoint.Expect100Continue = false;
            getTextRequst.ServicePoint.UseNagleAlgorithm = false;
            getTextRequst.ServicePoint.ConnectionLimit = 65500;
            getTextRequst.AllowWriteStreamBuffering = false;*/ 

            getTextRequst.ContentType = "audio /"+para_format+";rate="+para_Hz;
            getTextRequst.ContentLength = fi.Length;
            getTextRequst.Method = "post";
            getTextRequst.Accept = "*/*";
            getTextRequst.KeepAlive = true;
            getTextRequst.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)";
            getTextRequst.Timeout = 30000;//30秒连接不成功就中断
            using (Stream writeStream = getTextRequst.GetRequestStream())
            {
                writeStream.Write(voice, 0, voice.Length);
            } 

            HttpWebResponse getTextResponse = getTextRequst.GetResponse() as HttpWebResponse;
            using (StreamReader strHttpText = new StreamReader(getTextResponse.GetResponseStream(), Encoding.UTF8))
            {
                strJSON = strHttpText.ReadToEnd();
            } 

            JObject jsons = JObject.Parse(strJSON);//解析JSON  

            if (jsons["err_msg"].Value<string>() == "success.")
            {
                    strText = jsons["result"][0].ToString();
                    return strText;
            }
            else
            {
                    error = jsons["err_no"].Value<string>() + jsons["err_msg"].Value<string>();
                    return error;
            } 

        }

  参考: http://yuyin.baidu.com/docs/asr/57

API请求方式基本说明

  • 语音识别接口支持 POST 方式
  • 目前 API 仅支持整段语音识别的模式,即需要上传整段语音进行识别
  • 语音数据上传方式有两种:隐示发送和显示发送
  • 原始语音的录音格式目前只支持评测 8k/16k 采样率 16bit 位深的单声道语音
  • 压缩格式支持:pcm(不压缩)、wav、opus、speex、amr、x-flac
  • 系统支持语言种类:中文(zh)、粤语(ct)、英文(en)
  • 正式地址:http://vop.baidu.com/server_api
时间: 2024-10-15 17:18:07

csharp:百度语音识别的相关文章

百度语音识别开放平台SDK使用方法

百度Android语音识别SDK分在线与离线两种,这篇文章介绍在线SDK的使用方法. 在线SDK是以JAR包和动态链接库形式发布和使用,可以从百度开放云平台网站中下载SDK及使用说明文档. http://developer.baidu.com/wiki/index.php?title=docs/cplat/media/voice 完成语音SDK的集成分以下几步,本文将一步步介绍SDK集成方法. 1.注册开放开放平台 点击管理控制台,选择移动应用管理 选择创建应用,填写应用名称     可以看到右

delphi调用百度语音识别REST API

delphi调用百度语音识别REST API-20160616-感谢 魔术猫 和 DelphiTeacher 兄的帮助解决了返回中文乱码的问题!-注:语音的录音格式目前只支持评测8k/16k采样率16bit位深的单声道语音 压缩格式支持:pcm(不压缩).wav.opus.speex.amr.x-flac var sUrl, sLan, cuid, apiKey, secretKey, token, sR: string;  response: TStringStream; Stream: TF

百度语音识别REST API完整Demo

说明:web开发 原理: 1.html5录制音频文件; 2.将录制好的音频文件 通过 post 传给服务器 3.服务器通过 百度语音识别 REST API 传给百度服务器,并返回文字 Demo文件: 1.luyin.html 2.luyin.js 3.yuyin.php 以下是文件内容: luyin.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head><m

百度语音识别REST API使用方法(含C++代码)——不需要集成SDK的方法

上一篇文章http://blog.csdn.net/zpf8861/article/details/32322089已经介绍了百度语音识别REST API的使用步骤和功能介绍,这篇文章主要通过一个实例代码来展示如何使用该API. 本文代码为C++版,可以用于C环境的应用开发中,下面介绍其中重要的代码. 下面代码是一个可以使用该方式进行语音识别功能的实例代码 #include <stdio.h> #include <stdlib.h> #include "curl/incl

百度语音识别REST API使用方法(含JAVA代码)——不需要集成SDK的方法

上一篇文章http://blog.csdn.net/zpf8861/article/details/32322089已经介绍了百度语音识别REST API的使用步骤和功能介绍,这篇文章主要通过一个实例代码来展示如何使用该API. 本文代码为JAVA版,可以用于Android应用开发中,下面介绍其中重要的代码. 获得Token 其中apiKey和secretKey是从百度开放平台获得的,获得方法参看上一篇文章. private static void getToken() throws Excep

百度语音识别REST API——通过使用Http网络请求方式获得语音识别功能

百度语音识别通过REST API的方式给开发者提供一个通用的HTTP接口,基于该接口,开发者可以轻松的获取语音识别能力,本文档描述了使用语音识别服务REST API的方法. 优点: 较之开发者常用的获取语音识别功能的方法,本方法最大的优势是轻量级,不需要在所开发的应用中集成任何SDK开发工具包,也不需要在测试机中添加任何识别引擎软件,开发者只要了解Http网络请求以及百度语音识别 REST API的使用规则,即可轻轻松松在自己的应用中使用语音识别相关的功能了. 功能介绍: REST API支持整

百度语音识别服务 —— 语音识别 REST API 开发笔记

在以前的项目中用到了百度语音识别服务,在这里做一个笔记.这里还是要和大家强调一下,最好的学习资料就是官网网站.我这里只是一个笔记,一方面整理了思路,另一方面方便以后我再次用到的时候可以快速回忆起来. 百度语音识别服务是什么? 百度语音识别服务能将语音文件(指定格式,不是所有格式都可以)识别成文本.语音识别我们都接触过,手机输入法里就有语音识别服务. 什么是百度语音识别的 REST API? 按照官网的说法 行业率先推出语音识别REST API,采用HTTP方式请求,可适用于任何平台的语音识别,给

基于百度语音识别API的Python语音识别小程序

一.功能概述 实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能. 在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换. 工作示例: 二.软件环境 操作系统:win10 语言:Python 版本:3.6.0 Python库:AipSpeech(百度语音识别SDK客户端),wave,PyAudio,paInt16 Python库安装:除百度为:pip install baidu-aip,其他直接 pip install *(库名) 即可. 三.原理概述

百度语音识别API初探

近期想做个东西把大段对话转成文字.用语音输入法太慢,所以想到看有没有现成的API,网上一搜,基本就是百度和讯飞. 这里先看百度的 笔者使用的是Java版本号的 下载地址:http://bos.nj.bpc.baidu.com/v1/audio/Baidu_Voice_RestApi_SampleCode.zip 解压之后里面有个51.2KB的PCM格式的音频文件,笔者尝试用各种播放器发现非常少有能打开的.最后找到一种方法分享一下. 一.播放例子音频 下载安装Adobe Audition 3.0当