C# 10分钟完成百度语音技术(语音识别与合成)——入门篇

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

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.dllNewtonsoft.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 = "16938141";
            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 = 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 = "16938141";
            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 = 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);
            }
        }
    }
}

运行后查看效果,如下:

 

这样就合成成功了。


 

4、总结

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

转载请注明出处,谢谢!

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

拜拜,下次再见咯!

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
1月前
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
55 7
|
1月前
|
C#
C#入门
C#入门
26 0
|
2月前
|
Ubuntu 机器人 语音技术
语音识别与语音控制的原理介绍
硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>=10)/Ubuntu(>=20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂未放入,请根据内容进行适当处理。 cd /userdata/dev_ws/ # 配置TogetheROS环境 source /opt/tros/setup.bash # 从tros.b的安装路径中拷贝出运行示例需要的配置文件。 cp -r /opt/tros/lib/hobot_audio/config/ . # 加载音频驱动,设备启动之后只
222 83
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
4天前
|
程序员 C# 图形学
全面的C#/.NET自学入门指南
全面的C#/.NET自学入门指南
|
1月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
59 8
|
1月前
|
Ubuntu 机器人 语音技术
语音识别与语音控制
【10月更文挑战第4天】硬件平台 机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>=10)/Ubuntu(>=20.04)扩展硬件:X3语音版 运行案例 首先进入OriginBot主控系统,运行一下指令。请注意,部分操作OriginBot内暂未放入,请根据内容进行适当处理。 cd /userdata/dev_ws/ # 配置TogetheROS环境 source /opt/tros/setup.bash # 从tros.b的安装路径中拷贝出运行示例需要的配置文件。 cp -r /opt/tros/lib/hobot_audio/config/ . # 加载
|
14天前
|
机器学习/深度学习 自然语言处理 搜索推荐
智能语音交互技术:构建未来人机沟通新桥梁####
【10月更文挑战第28天】 本文深入探讨了智能语音交互技术的发展历程、当前主要技术框架、核心算法原理及其在多个领域的应用实例,旨在为读者提供一个关于该技术全面而深入的理解。通过分析其面临的挑战与未来发展趋势,本文还展望了智能语音交互技术如何继续推动人机交互方式的革新,以及它在未来社会中的潜在影响。 ####
37 0
|
1月前
|
人工智能 语音技术 数据格式
三文带你轻松上手鸿蒙的AI语音01-实时语音识别
三文带你轻松上手鸿蒙的AI语音01-实时语音识别
33 0
三文带你轻松上手鸿蒙的AI语音01-实时语音识别
|
15天前
|
机器学习/深度学习 搜索推荐 人机交互
智能语音交互技术的突破与未来展望###
【10月更文挑战第27天】 本文聚焦于智能语音交互技术的最新进展,探讨了其从早期简单命令识别到如今复杂语境理解与多轮对话能力的跨越式发展。通过深入分析当前技术瓶颈、创新解决方案及未来趋势,本文旨在为读者描绘一幅智能语音技术引领人机交互新纪元的蓝图。 ###
25 0

热门文章

最新文章

  • 1
    实时语音识别 使用websockt传输二进制数组 onSentenceEnd不返回结果
    30
  • 2
    在人工智能和机器学习的领域中,语音识别(Speech Recognition,SR)是一个重要的研究方向。它旨在将人类的语音转换为计算机可读的文本。
    112
  • 3
    Python基于librosa和人工神经网络实现语音识别分类模型(ANN算法)项目实战
    133
  • 4
    深度学习在语音识别中的进展
    59
  • 5
    语音识别------ffmpeg的使用01,ffmpeg的安装,会做PPT很好,ffmpeg不具备直接使用,只可以操作解码数据,ffmpeg用C语言写的,得学C语言,ffmpeg的安装
    64
  • 6
    语音识别-----列表的常用操作课后练习讲解,用变量追加,取出第一个,取出最后一个,下标位置,列表的循环遍历,下标+1的写法,len下标可以小于这个值,while循环对index循环的遍历
    38
  • 7
    语音识别-免费开源的语音转文本软件Whisper的本地搭建详细教程,python版本是3.805,ffmpeg是专门处理音视频的,ffmpeg的下载链接,现在要求安装python和ffmpeg
    217
  • 8
    语音识别,列表的定义语法,列表[],列表的下标索引,从列表中取出来特定的数据,name[0]就是索引,反向索引,头部是-1,my[1][1],嵌套列表使用, 列表常用操作, 函数一样,需引入
    40
  • 9
    语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
    39
  • 10
    语音识别----函数基础定义联系案例,函数的参数,函数的参数练习案例,函数的返回值定义语法,函数返回值之None,函数的说明文档,函数的嵌套调用,变量在函数中的作用域,内部变量变全局变量用global
    44