由于公司需求,需要对录音进行语音识别,并且以歌词的形式展示出来,所以分别对科大讯飞,腾讯的语音识别进行了研究学习,对比过后发现:
目前腾讯还未有声纹识别,不符合需求,pass.
so,选择科大讯飞,研究学习按步骤走:
第一步: 注册账户创建相对应的webAPI,选择语音转写服务 (注册新用户可领取5小时免费转写时间)
第二步: 查看开发文档,下载自己较为熟悉的语言Demo(Java为例)
第三步:将java转成C#
用到的工具类方法:
EncryptHelper.cs
#region MD5加密
public static string MD5Encrypt(string encryptString)
{
string returnValue;
try
{
encryptString = "#*f-`" + encryptString + "6^)!mL";
MD5 md5 = new MD5CryptoServiceProvider();
returnValue = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(encryptString))).Replace("-", "");
md5.Clear();
}
catch (Exception)
{
throw;
}
return returnValue;
}
public static string MD5(string encryptString)
{
string returnValue;
try
{
MD5 md5 = new MD5CryptoServiceProvider();
returnValue = BitConverter.ToString(md5.ComputeHash(Encoding.Default.GetBytes(encryptString))).Replace("-", "");
md5.Clear();
}
catch (Exception)
{
throw;
}
return returnValue;
}
#endregion
#region HMACSHA1算法
public static string HMACSHA1Base64(string value, string keyStr)
{
Encoding encode = Encoding.UTF8;
byte[] byteData = encode.GetBytes(value);
byte[] byteKey = encode.GetBytes(keyStr);
HMACSHA1 hmac = new HMACSHA1(byteKey);
CryptoStream cs = new CryptoStream(Stream.Null, hmac, CryptoStreamMode.Write);
cs.Write(byteData, 0, byteData.Length);
cs.Close();
return Convert.ToBase64String(hmac.Hash);
}
#endregion
HttpHelper.cs
public static string HttpPost(string url, string postData, Dictionary<string, string> headers = null, string contentType = null, int timeout = 60, Encoding encoding = null)
{
HttpClient client = null;
try
{
if (url.StartsWith("https"))
{
var handler = new HttpClientHandler();
X509Certificate2 cerCaiShang = new X509Certificate2(ApiConfig.CertFile, ApiConfig.CertPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
handler.ClientCertificates.Add(cerCaiShang);
handler.PreAuthenticate = true;
handler.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback = (httpRequestMessage, cert, cetChain, policyErrors) =>