用Visual studio 2019,C#语言,语音识别及合成

用Visual studio 2019,C#语言,语音识别及合成

本人以前从没有接触过代码,所以下面写的内容非常基础简单,请大佬勿喷。主要是为了记录一下刚接触代码三天的收获——windows环境下语音合成和语音识别

一、Visual studio 2019 community 安装

Visual studio 2019 community 安装,直接去百度搜就好,在官网,进行下载安装,不需要任何教程自己就可以完成。(不像SolidWorks,Proe,MATLAB,Ansys,,要看教程,破解,汉化),个人建议
不用汉化Visual studio 2019 community,我就安装在C盘了,19个G。
你也可以把一些组件按在其他盘。
 VS2019社区版是款非常好用的开发工具,软件除了大多数IDE提供的标准编辑器和调试器之外,还包括编译器、代码完成工具、图形设计器和许多其他功能,以简化软件开发过程,能够适用于 Android、iOS、Windows、Web、云开发。

二、开始创作语音识别及合成项目

2.1既然可以识别语音,肯定有一个语音的对比库,所以要调用百度人工智能开放平台

1、注册百度账号

2、登录百度 AI 开发平台,http://ai.baidu.com/

3、在控制台点击“百度语音”服务,点击“创建应用”

4、重点,重点,重点,获取秘钥。在应用列表中查看,我们要使用三个重要的信息(APP_ID, API_KEY, SECRET_KEY),
用Visual studio 2019,C#语言,语音识别及合成_第1张图片

Visual studio 2019 community 开始写代码

打开 vs2019,点击文件,新建项目,选择 visual C# --> windows 桌面 --> windows 窗体应用,注意用C#语言,选择自己的项目地址,点击确定

接下来呢,就是调用控件了,主要用到了 Textbox button,自己去试试就会啦
下面是我自己做的
用Visual studio 2019,C#语言,语音识别及合成_第2张图片

textbox 不需要设置,对于button,不仅要改其中文本,还有Click事件,写其中的代码

在写代码前必须,必须要加入两个SDK文件,他们的格式为 .dll在这里插入图片描述

using Baidu.Aip.Speech;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SpeechDemo1
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                //现在开始第一个buttton的代码,if语句表示“使跳出的对话框 表现为 Windows系统搜索的结果”,
                //并需要用户点击OK确定,则会进入下一行{}种的代码,  注意if后面加括号,且没有分号,冒号。

            {
                //将刚打开的文件夹名称的路径   赋值给  testbox1的文本
                textBox1.Text = openFileDialog1.FileName;

                //接着,信息框 提示 (“打开文件成功”)
                MessageBox.Show("打开文件成功");
            }
        }

        private void OpenFileDialog1_FileOk(object sender, CancelEventArgs e)
        {

        }

        private void Button2_Click(object sender, EventArgs e)
        {



            // 好了,开始第二个button的click的代码编写,设置APPID/AK/SK
            //这个button点击,要实现语音识别,需要百度AI库的帮助,解决方案-引用-添加本地文件
            //AiSDK.dll   Newton.soft.josn.dll
            var APP_ID = "17335080";
            var API_KEY = "OpQ0Ovm6qOqGuQGtSAcsnU8Q";
            var SECRET_KEY = "Yix5uRXm7CHqti554muXvkE4SiIEKfUm";



            //定义client为 new asr,使用时需要 APP_ID, API_KEY, SECRET_KEY三个数据,用来访问百度数据库
            //上面需要using Baidu.Aip.Speech.Asr,否则不会使用该函数
            var client = new Asr(APP_ID, API_KEY, SECRET_KEY);
            client.Timeout = 60000;  // 修改超时时间


            //定义data 需要打开文件的 地址 =(该地址为二进制)@使得初始化符号在"前面加
            //??问题是,   其实不太好,上面无论打开的是什么文件最后其实都是对这个文件的语音识别???
            var data = File.ReadAllBytes(@"C:\Users\Administrator\Desktop\16k.pcm");



            // 可选参数
            //定义一个options,来调用baidu数据库的dictionary
            var options = new Dictionary<string, object>
            {
            {"dev_pid", 1536}
             };
            client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms



            //定义result,开始语音识别操作 (bytes字节-data地址,strings字符串-format格式,int整数—识别时间,使用的词典)
            var result = client.Recognize(data, "pcm", 16000, options);
            Console.Write(result);
            textBox2.Text = Convert.ToString(result);
        }

        private void TextBox2_TextChanged(object sender, EventArgs e)
        {

        }






        private void Button3_Click(object sender, EventArgs e)
        {
            


            //button3语音合成,只需要api-key,secret-key,使用tts数据库
            var API_KEY = "OpQ0Ovm6qOqGuQGtSAcsnU8Q";
            var SECRET_KEY = "Yix5uRXm7CHqti554muXvkE4SiIEKfUm";

            var client = new Tts(API_KEY, SECRET_KEY);



            /*如果文本框为空 则返回
              若输入了文字,那么定义这串文字为  string格式s
              再次调用dictionary*/

            if (textBox3.Text == string.Empty)
            {
                return;
            }
            string s = textBox3.Text;
            var option = new Dictionary<string, object>()
                {
                    { "spd", 5}, // 语速          
                    { "vol", 10}, // 音量            
                    { "per", 0}  // 发音人,4:情感度丫丫童声  
                };
            var result = client.Synthesis(s, option);
            if (result.Success)
            {
                File.WriteAllBytes("D:\\result.mp3", result.Data);

                MessageBox.Show(@"音频文件以保存至路径 D:\result.mp3 中,请查看。");

    
            }
        }
    }
}

开始运行吧,这样你就成功的完成了一个,Windows应用程序,他会自自动成 .exe应用程序,也可以分享给别人使用
结束啦,这是第一次敲代码,下次再见

你可能感兴趣的:(用Visual studio 2019,C#语言,语音识别及合成)