我们已经讲了人脸识别(入门+进阶)、图片识别(入门)。下面是链接:

C# 10分钟完成百度人脸识别——入门篇

C# 30分钟完成百度人脸识别——进阶篇(文末附源码)

C# 10分钟完成百度图片提取文字(文字识别)——入门篇

今天我们来盘一盘语音识别与合成。

PS:仅供了解参考,如需进一步了解请继续研究。

我们现在就基于百度Ai开放平台进行语音技术的相关操作,demo使用的是C#控制台应用程序。

前面的套路还是一样的:


  1. 注册百度账号api,创建自己的应用;
  2. 创建vs控制台应用程序,引入动态链接库;
  3. 编写代码调试,效果图查看;
    • 语音识别
    • 语音合成
    • 实时语音识别
    • 音频文件转写
    • 语音模型训练
  1. 总结。

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目录结构

  1. Baidu.Aip
  2. ├── net35
  3.    ├── AipSdk.dll // 百度AI服务 windows 动态库
  4.    ├── AipSdk.xml // 注释文件
  5.    └── Newtonsoft.Json.dll // 第三方依赖
  6. ├── net40
  7. ├── net45
  8. └── netstandard2.0
  9. ├── AipSdk.deps.json
  10. └── 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

语音识别:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace Voice
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. // 设置APPID/AK/SK
  15. var APP_ID = "";
  16. var API_KEY = "8y2pB5HLrLD5Zu7aaQV3ce0g";
  17. var SECRET_KEY = "5tDp3opvpIdEnlXBTOWn9W0O7CdhRNYu";
  18.  
  19. //语音识别
  20. var client = new Baidu.Aip.Speech.Asr(APP_ID, API_KEY, SECRET_KEY);
  21. client.Timeout = ; // 修改超时时间
  22. var data = File.ReadAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\16k.wav");
  23. // 可选参数
  24. var options = new Dictionary<string, object>
  25. {
  26. {"dev_pid", } //语音模型1536代表普通话,其他请查看官方文档
  27. };
  28. client.Timeout = ; // 若语音较长,建议设置更大的超时时间. ms
  29. var result = client.Recognize(data, "wav", , options);
  30. Console.Write(result);
  31.  
  32. ////语音合成
  33. //var _ttsClient = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
  34. //_ttsClient.Timeout = 60000; // 修改超时时间
  35. //// 可选参数
  36. //var option = new Dictionary<string, object>()
  37. // {
  38. // {"spd", 5}, // 语速
  39. // {"vol", 7}, // 音量
  40. // {"per", 4} // 发音人,4:情感度丫丫童声
  41. // };
  42. //var result = _ttsClient.Synthesis("今天天气不错,适合嗮太阳", option);
  43. //if (result.ErrorCode == 0) // 或 result.Success
  44. //{
  45. // File.WriteAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\aaa.mp3", result.Data);
  46. //}
  47. }
  48. }
  49. }

我们查看一下识别出来的语音是什么

这个就是我准备的语音,识别成功。

格式支持: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

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace Voice
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. // 设置APPID/AK/SK
  15. var APP_ID = "";
  16. var API_KEY = "8y2pB5HLrLD5Zu7aaQV3ce0g";
  17. var SECRET_KEY = "5tDp3opvpIdEnlXBTOWn9W0O7CdhRNYu";
  18.  
  19. ////语音识别
  20. //var client = new Baidu.Aip.Speech.Asr(APP_ID, API_KEY, SECRET_KEY);
  21. //client.Timeout = 60000; // 修改超时时间
  22. //var data = File.ReadAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\16k.wav");
  23. //// 可选参数
  24. //var options = new Dictionary<string, object>
  25. // {
  26. // {"dev_pid", 1536} //语音模型1536代表普通话,其他请查看官方文档
  27. // };
  28. //client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
  29. //var result = client.Recognize(data, "wav", 16000, options);
  30. //Console.Write(result);
  31.  
  32. //语音合成
  33. var _ttsClient = new Baidu.Aip.Speech.Tts(API_KEY, SECRET_KEY);
  34. _ttsClient.Timeout = ; // 修改超时时间
  35. // 可选参数
  36. var option = new Dictionary<string, object>()
  37. {
  38. {"spd", }, // 语速
  39. {"vol", }, // 音量
  40. {"per", } // 发音人,4:情感度丫丫童声
  41. };
  42. var result = _ttsClient.Synthesis("听说关注博主不迷路", option);
  43. if (result.ErrorCode == ) // 或 result.Success
  44. {
  45. File.WriteAllBytes("E:\\Work Demo\\语音技术\\Voice\\Voice\\Image\\aaa.mp3", result.Data);
  46. }
  47. }
  48. }
  49. }

运行后查看效果,如下:

 

这样就合成成功了。


4、总结

 简单的入门就到这里,后面的实时语音识别、音频文件转写、建立模型进行语音训练就需要靠大家了。

转载请注明出处,谢谢!

原文地址:https://www.cnblogs.com/xiongze520/p/11301882.html

拜拜,下次再见咯!

C# 10分钟完成百度语音技术(语音识别与合成)——入门篇的更多相关文章

  1. C# 10分钟完成百度翻译(机器翻译)——入门篇

    我们之前基于百度ai开发平台实现了人脸识别 [1].文字识别 [2].语音识别 [3] 与合成的入门和进阶,今天我们来实现百度翻译的实现. 随着"一带一路"政策的开展,各种项目迎接 ...

  2. C# 10分钟完成百度图片提取文字(文字识别)——入门篇

    现在图片文字识别已经很成熟了,比如qq长按图片,点击图片识别就可以识别图片的文字,将不认识的.文字数量大的.或者不能赋值的值进行二次可复制功能. 我们现在就基于百度Ai开放平台进行个人文字识别,dem ...

  3. 服务端技术进阶(八)GitHub入门篇

    服务端技术进阶(八)GitHub入门篇 前言 在投递简历的过程中,发现有的公司会要求填写自己的GitHub地址,而自己却还没有GitHub帐号,准确点说是自己还不太会使用GitHub.(貌似开源社区中 ...

  4. python调用百度语音(语音识别-斗地主语音记牌器)

    一.概述 本篇简要介绍百度语音语音识别的基本使用(其实是斗地主时想弄个记牌器又没money,抓包什么的又不会,只好搞语音识别的了) 二.创建应用 打开百度语音官网,产品与使用->语音识别-> ...

  5. C# 10分钟完成百度人脸识别——入门篇

    嗨咯,小编在此祝大家新年快乐财多多! 今天我们来盘一盘人脸注册.人脸识别等相关操作,这是一个简单入门教程. 话不多说,我们进入主题: 完成人脸识别所需的步骤: 注册百度账号api,创建自己的应用: 创 ...

  6. C# 30分钟完成百度人脸识别——进阶篇(文末附源码)

    距离上次入门篇时隔两个月才出这进阶篇,小编惭愧,对不住关注我的卡哇伊的小伙伴们,为此小编用这篇博来谢罪. 前面的准备工作我就不说了,注册百度账号api,创建web网站项目,引入动态链接库引入. 不了解 ...

  7. 利用百度语音API进行语音识别。

    由于项目需要,这几天都在试图利用百度语音API进行语音识别.但是识别到的都是“啊,哦”什么的,我就哭了. 这里我只是分享一下这个过程,错误感觉出现在Post语音数据那一块,可能是转换问题吧. API请 ...

  8. Android 通过调用系统,如接口 谷歌语音、百度语音、科大讯飞语音等语音识别方法对话框

    现在app在发展过程中会集成一些语音识别功能,不具有其自己的显影剂一般正在开发的语音识别引擎,所以在大多数情况下,它是选择一个成熟的语音识别引擎SDK集成到他们的app在. 平时,这种整合被分成两个, ...

  9. ros下基于百度语音的,语音识别和语音合成

    代码地址如下:http://www.demodashi.com/demo/13153.html 概述: 本demo是ros下基于百度语音的,语音识别和语音合成,能够实现文字转语音,语音转文字的功能. ...

随机推荐

  1. 基于STM32之UART串口通信协议(四)Printf发送

    一.前言 1.简介 前面在UART发送中已经讲解过如何调用HAL库的HAL_UART_Transmit函数来实现串口发送,而在调用这个函数来实现串口发送的话,但是在发送数据或者字符的时候,需要将数据或 ...

  2. Oracle数据库---异常处理

    Oracle异常处理在PL/SQL语句书写时,需要处理的异常-- 不做异常处理时DECLARE v_name emp.ename%TYPE; v_sal emp.sal%TYPE;BEGIN SELE ...

  3. flink dataset api使用及原理

    随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性.吞吐量.容错能力以及使用便 ...

  4. C# 使用Quartz简单实例以及备忘

    一.导入NuGet  二.创建一个类并实现接口Ijob,并实现该接口中的方法. using Buday.Gold.Cusumer.Lib; using Quartz; using System; us ...

  5. web文件下载(附方案及源码配置)

    1. 场景描述 因项目需查询数据量比较大(需要查询Hbase等nosql数据库),采用用户点击查询后,后台查询并生成查询文件:然后消息通知用户后,用户点击下载的方式来满足用户需求. 2. 解决方案 W ...

  6. .NET Core CSharp初级篇 1-1

    .NET Core CSharp初级篇 1-1 本节内容是对于C#基础类型的存储方式以及C#基础类型的理论介绍 基础数据类型介绍 例如以下这句话:"张三是一名程序员,今年15岁重50.3kg ...

  7. Java 读取PDF中的文本和图片

    本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取.   使用工具:Free Spire.PDF for Ja ...

  8. MyBatis bind标签的用法

    From<MyBatis从入门到精通> <!-- 4.5 bind用法 bind标签可以使用OGNL表达式创建一个变量并将其绑定到上下文中. 需求: concat函数连接字符串,在M ...

  9. 在 .h 和 cpp 中查找 :grep consume ~/test/2016/AMQP-CPP/**/*.cpp ~/test/2016/AMQP-CPP/**/*.h -r

    :grep consume ~/test/2016/AMQP-CPP/**/*.cpp ~/test/2016/AMQP-CPP/**/*.h -r -w "whole" 匹配整个 ...

  10. flash put_movie loadmovie 区别

    put_Movie 应该是c++的函数用来往程序加载一个swf用的,as3里没有loadmovie是flash用的,用来加载另一个swf或jpeg文件 不过这个loadmovie这个函数是在as2中用 ...