今天给大家分享一下使用腾讯语音识别服务轻松完成音频文件识别功能。这里使用的是C#编写的窗体应用。希望对大家了解和快速接入腾讯语音识别服务的朋友提供一些帮助!
腾讯云语音识别服务(Automatic Speech Recognition, ASR)作为一种先进的云端PaaS解决方案,专注于将语音实时高效地转换为文本内容,为各行各业的企业客户打造出既精确又具成本效益的语音识别应用体验。此技术广泛应用于腾讯内部的旗舰产品,如微信、王者荣耀、腾讯视频等,验证了其在大规模实际场景下的可靠性和高效性。
首先登录自己的腾讯云控制台账户,然后进入腾讯语音服务官网:
https://cloud.tencent.com/product/asr?from_column=20421&from=20421
然后创建开发者密钥
密钥创建完成后进入管理界面
注意:一定要妥善保护后自己的开发密钥
查看官方赠送的语音识别包,这对于开发者还是比较友好的,方面进行开发体验。
实现思路:
1、登录腾讯云控制台
2、开通语音识别服务
3、申请开发密钥
4、使用VS创建窗体应用项目
5、引入腾讯云SDK
6、设计窗体页面
7、编写调用类库和按钮事件
这里使用C#创建一个窗体程序实现音频文件的识别。
这里为了方面开发,首先我们生成一个语音文件。
下图是使用官方在线的API调用识别的结果,还是非常的精确的。
现在开始进入开发阶段,首先我们新建一个Winform窗体应用命名为SpeechRecognitionDemo。
这里直接使用nuge可视化管理包的方式进行引入。
1、发起语音请求获取taskId ,代码如下:
/// <summary>
/// 发起语音识别请求 获取taskId
/// </summary>
/// <param name="SecretId">SecretId 注意保密</param>
/// <param name="SecretKey">SecretKey 注意保密</param>
/// <returns></returns>
public static string CreateTask(string SecretId,string SecretKey,string url)
{
try
{
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
Credential cred = new Credential
{
SecretId = SecretId,
SecretKey = SecretKey
};
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.Endpoint = ("asr.tencentcloudapi.com");
clientProfile.HttpProfile = httpProfile;
// 实例化要请求产品的client对象,clientProfile是可选的
AsrClient client = new AsrClient(cred, "", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
CreateRecTaskRequest req = new CreateRecTaskRequest();
req.EngineModelType = "16k_zh";
req.ChannelNum = 1;
req.SourceType = 0;
req.Url = url;
req.ResTextFormat = 1;
// 返回的resp是一个CreateRecTaskResponse的实例,与请求对象对应
CreateRecTaskResponse resp = client.CreateRecTaskSync(req);
//string result = AbstractModel.ToJsonString(resp);
string str = AbstractModel.ToJsonString(resp);
return resp.Data.TaskId.ToString();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
return "";
}
}
2、根据第一步获取的taskId 调用语音识别结果查询接口获取识别的文字内容
/// <summary>
/// 根据任务id查询识别的结果
/// </summary>
/// <param name="SecretId"></param>
/// <param name="SecretKey"></param>
/// <param name="taskId"></param>
/// <returns></returns>
public static string SearchResultByTaskId(string SecretId, string SecretKey,string taskId)
{
try
{
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
Credential cred = new Credential
{
SecretId = SecretId,
SecretKey = SecretKey
};
// 实例化一个client选项,可选的,没有特殊需求可以跳过
ClientProfile clientProfile = new ClientProfile();
// 实例化一个http选项,可选的,没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile();
httpProfile.Endpoint = ("asr.tencentcloudapi.com");
clientProfile.HttpProfile = httpProfile;
// 实例化要请求产品的client对象,clientProfile是可选的
AsrClient client = new AsrClient(cred, "", clientProfile);
// 实例化一个请求对象,每个接口都会对应一个request对象
DescribeTaskStatusRequest req = new DescribeTaskStatusRequest();
req.TaskId = ulong.Parse(taskId);
// 返回的resp是一个DescribeTaskStatusResponse的实例,与请求对象对应
DescribeTaskStatusResponse resp = client.DescribeTaskStatusSync(req);
string str = AbstractModel.ToJsonString(resp);
return resp.Data.Result;
// 输出json格式的字符串回包
//Console.WriteLine(AbstractModel.ToJsonString(resp));
}
catch (Exception e)
{
//Console.WriteLine();
return e.ToString();
}
}
特别注意:SecretId、SecretKey 一定要注意加密的方式引入
通过配置文件的方式获取密钥相关信息,首先调用创建语音任务,调用成功后获取taskId,然后根据taskid和密钥信息调用查询语音识别的结果返回个窗体的文本框。
string secretId = ConfigurationManager.AppSettings["SecretId"];
string secretKey = ConfigurationManager.AppSettings["SecretKey"];
string url = txtUrl.Text;
// 获取任务id
string taskId= SpeechRecognitionUtils.CreateTask(secretId,secretKey,url);
if (!string.IsNullOrWhiteSpace(taskId))
{
string result = SpeechRecognitionUtils.SearchResultByTaskId(secretId, secretKey, taskId);
textBox1.Text = result;
}
运行界面如下:首先输入公网访问的url音频地址,然后点击生成按钮。
代码调试过程重获取识别的json如下:
调用创建语音识别任务请求json
{"Data":{"TaskId":9150241621},"RequestId":"4eda563b-c092-4498-ab77-4197572306ad"}
获取识别结果json如下:
{"Data":{"TaskId":9150241621,"Status":2,"StatusStr":"success","Result":"[0:0.000,0:5.760] 腾讯云语音识别功能还是非常好用的,不信你也可以体验一下。\n","ErrorMsg":"","ResultDetail":[{"FinalSentence":"腾讯云语音识别功能还是非常好用的,不信你也可以体验一下。","SliceSentence":"腾讯云 语音识别 功能 还是 非常好 用的 不信 你也 可以 体验 一下","WrittenText":"","StartMs":0,"EndMs":5760,"WordsNum":11,"Words":[{"Word":"腾讯云","OffsetStartMs":130,"OffsetEndMs":795},{"Word":"语音识别","OffsetStartMs":795,"OffsetEndMs":1500},{"Word":"功能","OffsetStartMs":1500,"OffsetEndMs":1995},{"Word":"还是","OffsetStartMs":1995,"OffsetEndMs":2385},{"Word":"非常好","OffsetStartMs":2385,"OffsetEndMs":2925},{"Word":"用的","OffsetStartMs":2925,"OffsetEndMs":3410},{"Word":"不信","OffsetStartMs":3550,"OffsetEndMs":4035},{"Word":"你也","OffsetStartMs":4035,"OffsetEndMs":4305},{"Word":"可以","OffsetStartMs":4305,"OffsetEndMs":4545},{"Word":"体验","OffsetStartMs":4545,"OffsetEndMs":4860},{"Word":"一下","OffsetStartMs":4860,"OffsetEndMs":5330}],"SpeechSpeed":4.5,"SpeakerId":0,"EmotionalEnergy":0.0,"SilenceTime":0,"EmotionType":["disabled"]}],"AudioDuration":5.76},"RequestId":"1d9b9392-18f4-47de-a75a-8f14e5d96c53"}
输出的识别结果如下:
以上仅仅是一个音频文件识别的demo,目前采用的方式是url的方式,当然也可以使用本地音频文件的方式开发测试。
总的来说腾讯云语音识别功能从开发接入、响应速度、识别准确率来说都是非常不错的。感兴趣的朋友也可以自己体验一下!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。