欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-11 08:30:58
我们已经讲了人脸识别(入门+进阶)、图片识别(入门)。下面是链接: C# 10分钟完成百度人脸识别——入门篇 C# 30分钟完成百度人脸识别——进阶篇(文末附源码) C# 10分钟完成百度图片提取文字(文字识别)——入门篇 今天我们来盘一盘语音识别与合成。 PS:仅供了解参考,如需进一步了解请继续研 ......


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

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

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

 

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

 

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

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

运行后查看效果,如下:

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

 

这样就合成成功了。


 

4、总结

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

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