C# 10分钟完成百度语音技术(语音识别与合成)——入门篇
我们已经讲了人脸识别(入门+进阶)、图片识别(入门)。下面是链接:
C# 10分钟完成百度人脸识别——入门篇
C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
C# 10分钟完成百度图片提取文字(文字识别)——入门篇
今天我们来盘一盘语音识别与合成。
PS:仅供了解参考,如需进一步了解请继续研究。
我们现在就基于百度Ai开放平台进行语音技术的相关操作,demo使用的是C#控制台应用程序。
前面的套路还是一样的:
- 注册百度账号api,创建自己的应用;
- 创建vs控制台应用程序,引入动态链接库;
- 编写代码调试,效果图查看;
- 语音识别
- 语音合成
- 实时语音识别
- 音频文件转写
- 语音模型训练
- 总结。
1、创建百度AI语音技术应用
在百度AI开放平台中,登录自己的百度账号,点击“语音识别”服务,选择“创建应用”,填好应用名称,选择应用类型,填好应用描述,这样就创建好了“语音识别”服务。
具体不废话,不知道的小伙伴可以移步看这里:C# 10分钟完成百度人脸识别——入门篇。
创建完成后会生成APPID、APP Key、Secret Key,这些是关键内容,后面要用。
2、创建VS控制台应用程序,引入动态链接库
首先我们创建一个VS控制台应用程序,这里就不详细说明。
然后引入百度Baidu.AI动态链接库,步骤如下,小编使用2017,所以直接在NuGet中搜索Baidu.AI安装即可。
安装语音识别 C# SDK
C# SDK 现已开源! https://github.com/Baidu-AIP/dotnet-sdk
** 支持平台:.Net Framework 3.5 4.0 4.5, .Net Core 2.0 **
方法一:使用Nuget管理依赖 (推荐)
在NuGet中搜索 Baidu.AI
,安装最新版即可。
packet地址 https://www.nuget.org/packages/Baidu.AI/
方法二:下载安装
语音识别 C# SDK目录结构
Baidu.Aip
├── net35
│ ├── AipSdk.dll // 百度AI服务 windows 动态库
│ ├── AipSdk.xml // 注释文件
│ └── Newtonsoft.Json.dll // 第三方依赖
├── net40
├── net45
└── netstandard2.0
├── AipSdk.deps.json
└── AipSdk.dll
如果需要在 Unity 平台使用,可引用工程源码自行编译。
安装
1.在官方网站下载C# SDK压缩工具包。
2.解压后,将 AipSdk.dll
和 Newtonsoft.Json.dll
中添加为引用。
3、编写代码调试,效果图查看
创建一个空文件夹,命名为Image,存一个音频文件,做调试,后面语音合成的文件也在这里。
在Program.cs中编写代码,代码编写如下,可以直接拷贝进行调试。
我们这里只讲述语音识别和语音合成,其他的内容可以在官网进行编写:https://ai.baidu.com/docs#/ASR-Online-Csharp-SDK/top
语音识别:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Voice
{
class Program
{
static void Main(string[] args)
{
// 设置APPID/AK/SK
var APP_ID = "";
var API_KEY = "8y2pB5HLrLD5Zu7aaQV3ce0g";
var SECRET_KEY = "5tDp3opvpIdEnlXBTOWn9W0O7CdhRNYu"; //语音识别
var client = new Baidu.Aip.Speech.Asr(APP_ID, API_KEY, SECRET_KEY);
client.Timeout = ; // 修改超时时间
var data = File.ReadAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\16k.wav");
// 可选参数
var options = new Dictionary<string, object>
{
{"dev_pid", } //语音模型1536代表普通话,其他请查看官方文档
};
client.Timeout = ; // 若语音较长,建议设置更大的超时时间. ms
var result = client.Recognize(data, "wav", , options);
Console.Write(result); ////语音合成
//var _ttsClient = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
//_ttsClient.Timeout = 60000; // 修改超时时间
//// 可选参数
//var option = new Dictionary<string, object>()
// {
// {"spd", 5}, // 语速
// {"vol", 7}, // 音量
// {"per", 4} // 发音人,4:情感度丫丫童声
// };
//var result = _ttsClient.Synthesis("今天天气不错,适合嗮太阳", option);
//if (result.ErrorCode == 0) // 或 result.Success
//{
// File.WriteAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\aaa.mp3", result.Data);
//}
}
}
}
我们查看一下识别出来的语音是什么
这个就是我准备的语音,识别成功。
格式支持:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)。推荐pcm 采样率 :16000 固定值。 编码:16bit 位深的单声道。
百度服务端会将非pcm格式,转为pcm格式,因此使用wav、amr会有额外的转换耗时。
音频文件格式转换请参见文档【语音识别小工具\音频文件转码】
更多内容详见官网:https://ai.baidu.com/docs#/ASR-API/top
语音合成:
合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制
详见官网:https://ai.baidu.com/docs#/TTS-Online-Csharp-SDK/top
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Voice
{
class Program
{
static void Main(string[] args)
{
// 设置APPID/AK/SK
var APP_ID = "";
var API_KEY = "8y2pB5HLrLD5Zu7aaQV3ce0g";
var SECRET_KEY = "5tDp3opvpIdEnlXBTOWn9W0O7CdhRNYu"; ////语音识别
//var client = new Baidu.Aip.Speech.Asr(APP_ID, API_KEY, SECRET_KEY);
//client.Timeout = 60000; // 修改超时时间
//var data = File.ReadAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\16k.wav");
//// 可选参数
//var options = new Dictionary<string, object>
// {
// {"dev_pid", 1536} //语音模型1536代表普通话,其他请查看官方文档
// };
//client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
//var result = client.Recognize(data, "wav", 16000, options);
//Console.Write(result); //语音合成
var _ttsClient = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
_ttsClient.Timeout = ; // 修改超时时间
// 可选参数
var option = new Dictionary<string, object>()
{
{"spd", }, // 语速
{"vol", }, // 音量
{"per", } // 发音人,4:情感度丫丫童声
};
var result = _ttsClient.Synthesis("听说关注博主不迷路", option);
if (result.ErrorCode == ) // 或 result.Success
{
File.WriteAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\aaa.mp3", result.Data);
}
}
}
}
运行后查看效果,如下:
这样就合成成功了。
4、总结
简单的入门就到这里,后面的实时语音识别、音频文件转写、建立模型进行语音训练就需要靠大家了。
转载请注明出处,谢谢!
原文地址:https://www.cnblogs.com/xiongze520/p/11301882.html
拜拜,下次再见咯!
C# 10分钟完成百度语音技术(语音识别与合成)——入门篇的更多相关文章
- C# 10分钟完成百度翻译(机器翻译)——入门篇
我们之前基于百度ai开发平台实现了人脸识别 [1].文字识别 [2].语音识别 [3] 与合成的入门和进阶,今天我们来实现百度翻译的实现. 随着"一带一路"政策的开展,各种项目迎接 ...
- C# 10分钟完成百度图片提取文字(文字识别)——入门篇
现在图片文字识别已经很成熟了,比如qq长按图片,点击图片识别就可以识别图片的文字,将不认识的.文字数量大的.或者不能赋值的值进行二次可复制功能. 我们现在就基于百度Ai开放平台进行个人文字识别,dem ...
- 服务端技术进阶(八)GitHub入门篇
服务端技术进阶(八)GitHub入门篇 前言 在投递简历的过程中,发现有的公司会要求填写自己的GitHub地址,而自己却还没有GitHub帐号,准确点说是自己还不太会使用GitHub.(貌似开源社区中 ...
- python调用百度语音(语音识别-斗地主语音记牌器)
一.概述 本篇简要介绍百度语音语音识别的基本使用(其实是斗地主时想弄个记牌器又没money,抓包什么的又不会,只好搞语音识别的了) 二.创建应用 打开百度语音官网,产品与使用->语音识别-> ...
- C# 10分钟完成百度人脸识别——入门篇
嗨咯,小编在此祝大家新年快乐财多多! 今天我们来盘一盘人脸注册.人脸识别等相关操作,这是一个简单入门教程. 话不多说,我们进入主题: 完成人脸识别所需的步骤: 注册百度账号api,创建自己的应用: 创 ...
- C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
距离上次入门篇时隔两个月才出这进阶篇,小编惭愧,对不住关注我的卡哇伊的小伙伴们,为此小编用这篇博来谢罪. 前面的准备工作我就不说了,注册百度账号api,创建web网站项目,引入动态链接库引入. 不了解 ...
- 利用百度语音API进行语音识别。
由于项目需要,这几天都在试图利用百度语音API进行语音识别.但是识别到的都是“啊,哦”什么的,我就哭了. 这里我只是分享一下这个过程,错误感觉出现在Post语音数据那一块,可能是转换问题吧. API请 ...
- Android 通过调用系统,如接口 谷歌语音、百度语音、科大讯飞语音等语音识别方法对话框
现在app在发展过程中会集成一些语音识别功能,不具有其自己的显影剂一般正在开发的语音识别引擎,所以在大多数情况下,它是选择一个成熟的语音识别引擎SDK集成到他们的app在. 平时,这种整合被分成两个, ...
- ros下基于百度语音的,语音识别和语音合成
代码地址如下:http://www.demodashi.com/demo/13153.html 概述: 本demo是ros下基于百度语音的,语音识别和语音合成,能够实现文字转语音,语音转文字的功能. ...
随机推荐
- Centos7 系统初试化脚本
系统初始化设置 # 设置主机名,永久修改,再次登陆生效 hostnamectl set-hostname xxxxx # 安装eprl源,常用命令 yum install -y wget && ...
- c#基础二
对VS2012的理解 1.导入命名空间 命名空间就是类的"文件夹".类就是"文件夹"中的文件.需要导入命名空间 添加引用: 如果我需要在一个项目中,访问另一个项 ...
- POJ 1966:Cable TV Network(最小点割集)***
http://poj.org/problem?id=1966 题意:给出一个由n个点,m条边组成的无向图.求最少去掉多少点才能使得图中存在两点,它们之间不连通. 思路:将点i拆成a和b,连一条a-&g ...
- C#中产生SQL语句的几种方式
(1)拼接产生SQL语句: string sql = "insert into czyb(yhm,mm,qx) values('" + txtName.Text + "' ...
- redis快速部署
1. 场景描述 以前是直接使用公司提供的redis集群,只使用不负责维护,因项目用到负载均衡,需要使用redis做session共享,存储session信息,所以就部署了下,记录下以便后续能快速部署. ...
- android_SurfaceView 画图
有这样一种view类,可以让人在其上面画动画,画图片,它的全名叫做surfaceview.名称就包含两层意思,一层是surface,一层是view.前一层提供一个面可以让人画画,后一层是个view,可 ...
- 无法在<fastCGI>应用程序配置中找到<handler> scriptProcessor
在打开php文件的时候发现iis7.5报错了 每次在切换php版本的时候不知道为什么会出现这个错误,有的时候就又不会报错直接可以正常使用,然而php版本确定已经下载好,才可能的打开这个页面,那么就是i ...
- 多个数据库 migration
More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerS ...
- CSharp初级篇 1-4 this、索引器、静态、常量以及只读
.NET Core CSharp初级篇 1-4 本节内容为this.索引器.静态.常量以及只读 简介 在之前的课程中,我们谈论过了静态函数和字段的一小部分知识,本节内容中,我们将详细的讲解关于对象操作 ...
- [AOP拦截 ]SpringBoot+Quartz Aop拦截Job类中的方法
最近在工作使用boot+quartz整合,开发定时调度平台,遇到需要对Quartz的Job进行异常后将异常记录到日志表的操作,第一反应就想到了使用Spring的AOP,利用AfterThrowin ...