好久没来做贡献了,今天贴一个最近弄的一个小东西,实时语音识别,该技术目前已经很普遍,不做过多介绍了
网上找了很久,没有找到例子,不是要分就是要分,我只想说,程序猿何苦为难程序猿。。。。
而且下载的例子也都不是实时语音转写,基本都是短语音或者音频转写,没办法了,自己搞吧。
网站看到一篇帖子,借鉴一个前辈写的讯飞识别语音的例子做为参考,修改了一下,可以实现 实时语音转写
https://blog.csdn.net/qq_40582463/article/details/107983905
本案例对接的是 百度平台 WebSocket API 实时语音专写 ,因为百度有免费额度,讯飞还需要企业认证,做为平民玩家,只能优先使用方便并还免费的。
另外其他几个平台对接也都差不多,案例是使用C#语言 实现WebSocket进行通信对接,其他语言各平台可能会有SDK或Demo,但是都没有C#的。。
如果有想是要C# 对接其它平台的,代码可以作为参考,本人大致看了讯飞与百度的,对接都大同小异!
只是参数上有一些区别,这个看个人选择哪个平台做对接。最大差别嘛,收费不一样
废话不多说了,直接上代码,只有一个文件,就不打源码包了,基本引用及重要方法都已注释!
也不需要大家使用积分下载,用的时候说声谢谢就行。
using NAudio.Wave;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System.Web;
using WebSocket4Net;
namespace ConsoleApp
{
/// <summary>
/// 百度实时语音识别 WebSocket
/// </summary>
class Program
{ //引用俩个包,Nuget下可以找到, websocket Naudio
//百度新账户注册送10个小时免费试用,测试肯定够
private const String appid = "XXXXX";//到控制台-语音合成页面获取
private const String apiSecret = "XXXXXX";//到控制台-语音合成页面获取
private const String apiKey = "XXXXX";//到控制台-语音合成页面获取
//private static FileStream fs = new FileStream("test.pcm", FileMode.Open);//从音频文件进行语音识别时会用到
enum Status
{
FirstFrame = 0,
ContinueFrame = 1,
LastFrame = 2
}
private static WebSocket webSocket;
private static IWaveIn recorder;//录音机
private static volatile Status status = Status.FirstFrame;
static vo