c# 开发语音识别程序
作者:prepared 发布时间:2022-03-23 04:55:57
标签:c#,语音,识别
AI 平台:http://ai.baidu.com/
开发工具:vs 2017
准备工作
1、注册百度账号
2、登录百度 AI 开发平台,http://ai.baidu.com/
3、在控制台点击“百度语音”服务,点击“创建应用”,填写必填项,勾选额外接口,点击立即创建获取秘钥。在应用列表中查看自己的id
创建自己的项目
1、新建项目
打开 vs2017,点击文件,新建项目,选择 visual C# --> windows 桌面 --> windows 窗体应用,选择自己的项目地址,点击确定
2、添加 baiduai 开发包
点击引用 --> 管理 nuGet 程序包,搜索 baiduai,点击下载
3、UI 设计
直接拖动即可,生成界面如下
4、后台功能实现
选择文件按钮
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog";
//fdlg.InitialDirectory = @"c:/"; //@是取消转义字符的意思
//fdlg.Filter = "All files(*.*)|*.*|All files(*.*)|*.* ";
///*
// * FilterIndex 属性用于选择了何种文件类型,缺省设置为0,系统取Filter属性设置第一项
// * ,相当于FilterIndex 属性设置为1.如果你编了3个文件类型,当FilterIndex =2时是指第2个.
// */
fdlg.FilterIndex = 2;
///*
// *如果值为false,那么下一次选择文件的初始目录是上一次你选择的那个目录,
// *不固定;如果值为true,每次打开这个对话框初始目录不随你的选择而改变,是固定的
// */
//fdlg.RestoreDirectory = true;
if (fdlg.ShowDialog() == DialogResult.OK)
{
//textBox1.Text = System.IO.Path.GetFileNameWithoutExtension(fdlg.FileName);
filePath.Text = System.IO.Path.GetFullPath(fdlg.FileName);
}
}
开始识别按钮
// 语音合成按钮
private void button2_Click(object sender, EventArgs e)
{
string value = this.videoType.Text;
String filePath = this.filePath.Text;
// 设置APPID/AK/SK
String APP_ID = "14433392";
String API_KEY = "C7WMYgLeWv3Wm2yogwv5gD08";
String SECRET_KEY = "xcvwiwikALBDBaIcGisNQ6aQImtj3qua";
var client = new Asr(APP_ID, API_KEY, SECRET_KEY);
client.Timeout = 60000; // 修改超时时间
client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
byte[] buffur = new byte[fs.Length];
try
{
fs.Read(buffur, 0, (int)fs.Length);
}
catch (Exception ex)
{
Console.Write(ex.StackTrace);
}
finally
{
if (fs != null)
{
//关闭资源
fs.Close();
}
}
var result = client.Recognize(buffur, value, 16000);
Convert.ToString(result);
JToken resultStr = null;
result.TryGetValue("result", out resultStr);
Console.WriteLine("aToken===>"+ resultStr);
voiceResult.Text = Convert.ToString(resultStr);
Console.Write(result);
}
开始合成按钮
调用 api 中 C# SDK 的语音合成 api
https://ai.baidu.com/docs#/ASR-Online-Csharp-SDK/top
// 开始合成按钮(语音合成功能)
private void synthesisButton_Click(object sender, EventArgs e)
{
String APP_ID = "14433392";
String API_KEY = "C7WMYgLeWv3Wm2yogwv5gD08";
String SECRET_KEY = "xcvwiwikALBDBaIcGisNQ6aQImtj3qua";
// 获取输入框的值
String value = this.Speech_Synthesis.Text;
// 将 value 转成语音文件存放到本地
var client = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
// 可选参数
var option = new Dictionary<string, object>()
{
{"spd", 5}, // 语速
{"vol", 7}, // 音量
{"per", 3} // 发音人,4:情感度丫丫童声
};
var result = client.Synthesis(value, option);
try {
if (result.ErrorCode == 0) { // 或 result.Success
File.WriteAllBytes("E:/prepared/北航/07_工程实践--AI方向/作业/WindowsFormsApplication1/WindowsFormsApplication1/tmp.mp3", result.Data);
}
} catch (Exception ex) { Console.Write(ex.StackTrace); }
Play();
}
源码地址:https://github.com/zhongsb/vo...
来源:https://segmentfault.com/a/1190000017719477?utm_source=sf-related
0
投稿
猜你喜欢
- 咱们废话不多说进入主题、系统主页展示:用户登录后进行系统首页:主要功能模块如下、分角色管理、超级管理员拥有最高权限、可以进行菜单灵活控制、用
- 配置两个parent的方法在向pom.xml 文件中添加依赖之前需要先添加spring-boot-starter-parent。spring
- 前言前面介绍了APP顶部导航栏AppBar,今天来介绍下Flutter实现APP底部导航栏。我们以仿写微信的底部导航栏来举例说明。要实现类似
- 一,Thread 的几个常见属性Thread 类是 JVM 用来管理线程的一个类,换句话说,每个线程都有一个唯一的 Thread 对象与之关
- 读XMLXmlDocument xd = new XmlDocument(); string fi
- 方式一:例如:”0000123” (字符串必须全为数字)处理过程:String tempStr = "0000123";
- 1.多数元素题目描述思路详解这个思路比较简单,先排序,排序过后遍历如果后一个等于前一个输出就好代码与结果class Solution { &
- 方法的递归调用1. 基本介绍:简单地说,递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂问题的同时让代码变得简洁
- SpringBoot停止启动时测试检查rabbitmq问题在Springboot项目中配置rabbitmq后,总是在每次启动时自动测试MQ的
- 一. 线性表中的顺序表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见
- 题目要求思路一:双指针(模拟)Javaclass Solution { public boolean isFlip
- 1 环境部署1.1 jdk-8u111-windows-x64环境变量 JAVA_HOME:C:\Program Files\Java\jd
- 这篇文章主要介绍了Spring MVC4.1服务器端推送实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 本文实例为大家分享了使用aop实现全局异常处理的具体代码,供大家参考,具体内容如下日常业务中存在的问题使用大量的try/catch来捕获异常
- 1. 前言无论是自我学习中,还是在工作中,固然会遇到与前端搭配实现分页的功能,发现有几种方式,特此记录一下。2. 先说结论分页功能直接交给前
- IntelliJ IDEA简称IDEA,是常用的java开发工具,相对eclipse在使用上入门较难,但在编写java代码方面比较eclip
- 本文实例讲述了Java实现的求逆矩阵算法。分享给大家供大家参考,具体如下:package demo;public class MatrixI
- 第一个Lambda表达式在Lambda出现之前,如果我们需要写一个多线程可能需要下面这种方式:Runnable runnable = new
- 对流进行操作时要引用 using System.IO; 命名空间 FileStream常用的属性和方法:属性:CanRead 判断当前流是否
- 前言随着网络技术的发展、计算机应用水平广泛提高,原来系统的时效性、数据的正确性、操作的方便性上都存在不足,已影响到系统的正常使用。经过考察比