C# 调用百度语音合成api

c#语音识别与合成 1.语音识别:ASR_——将语音转变为文字 语音合成:TTS——将文字转变为语音 2.文字to语音: 1)在COM选项卡里面的Microsoft Speech object library引用 2)using SpeechLib; 3)SpVoiceClass voice = new SpVoiceClass();//SAPI 5.1 SpV 阅读详情

 目前来说,百度语音合成的api效果还算是不错的,而且小姐姐的声音也很甜,但是没有C#的demo,所以我写了一个C#的demo

在使用之前,请前往官网先申请个APIKey和SecretKey,本文中的APIKey和SecretKey是错的

 官网地址http://ai.baidu.com/tech/speech/tts
 官方文档地址http://ai.baidu.com/docs#/TTS-API/top

 

using Newtonsoft.Json;
using System;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;

namespace BaiduYyhcDemo
{
    class Program
    {
        #region Http访问辅助类
        /// <summary>
        /// 访问类
        /// </summary>
        /// <param name="url">访问地址</param>
        /// <param name="data">参数</param>
        /// <param name="encoding">编码类型</param>
        /// <returns></returns>
        public static string DoPost(string url, string data, Encoding encoding)
        {
            HttpWebRequest req = GetWebRequest(url, "POST");
            byte[] postData = Encoding.UTF8.GetBytes(data);
            Stream reqStream = req.GetRequestStream();
            reqStream.Write(postData, 0, postData.Length);
            reqStream.Close();
            HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();//这里报错的话请检查你的APIKey和SecretKey,一般是401,也就是服务器拒绝了你的请求
            return GetResponseAsString(rsp, encoding);
        }
        /// <summary>
        /// 请求头
        /// </summary>
        /// <param name="url">访问路径</param>
        /// <param name="method">访问类型</param>
        /// <returns></returns>
        public static HttpWebRequest GetWebRequest(string url, string method)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.ServicePoint.Expect100Continue = false;
            req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
            req.ContentType = "text/json";
            req.Method = method;
            req.KeepAlive = true;
            req.UserAgent = "getbeijingtime";
            req.Timeout = 1 * 60 * 60;
            req.Proxy = null;
            return req;
        }

        /// <summary>
        /// 转码
        /// </summary>
        /// <param name="rsp">相应类型</param>
        /// <param name="encoding">编码类型</param>
        /// <returns></returns>
        public static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
        {
            StringBuilder result = new StringBuilder();
            Stream stream = null;
            StreamReader reader = null;
            try
            {
                // 以字符流的方式读取HTTP响应
                stream = rsp.GetResponseStream();
                reader = new StreamReader(stream, encoding);
                // 每次读取不大于256个字符,并写入字符串
                char[] buffer = new char[256];
                int readBytes = 0;
                while ((readBytes = reader.Read(buffer, 0, buffer.Length)) > 0)
                {
                    result.Append(buffer, 0, readBytes);
                }
            }
            finally
            {
                // 释放资源
                if (reader != null) reader.Close();
                if (stream != null) stream.Close();
                if (rsp != null) rsp.Close();
            }
            return result.ToString();
        }

        [DllImport("wininet")]
        private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);

        ///// <summary>
        /// 检测本机是否联网
        /// </summary>
        /// <returns></returns>
        public static bool IsConnectedInternet()
        {
            int i = 0;
            if (InternetGetConnectedState(out i, 0))
            {
                //已联网
                return true;
            }
            else
            {
                //未联网
                return false;
            }
        }
        #endregion

        /// <summary>
        /// 获取Token数据
        /// </summary>
        public class BdVideoTokenModel
        {
            /// <summary>
            /// Token令牌,有效期30天
            /// </summary>
            public string access_token { get; set; }
            public string session_key { get; set; }
            public string scope { get; set; }
            public string refresh_token { get; set; }
            public string expires_in { get; set; }
        }

        /// <summary>
        /// 获取API的Token
        /// </summary>
        /// <returns></returns>
        public static string GetToken()
        {
            if (IsConnectedInternet() != true)
            {
                return "";
            }
            //官网地址http://ai.baidu.com/tech/speech/tts
            //官方文档地址http://ai.baidu.com/docs#/TTS-API/top
            //在Url里的client_id后输入你的APIKey,client_secret后输入你的SecretKey,我下面的两个key已经被改过了,直接请求会被拒绝
            string TokenUrl = "https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=vmrGThHqeea46QaskoD5RnkK&client_secret=qXiisaKFcjxm2psKm5nOe5s5wswkxBw";
            Encoding ec = Encoding.UTF8;//官方要求以UTF-8请求
            string tokenJson = DoPost(TokenUrl, "", ec);//请求出Json字符串
            BdVideoTokenModel b = JsonConvert.DeserializeObject<BdVideoTokenModel>(tokenJson);//解析出Token
            return b.access_token;
        }

        public static void PalyAudio()
        {
            string url = "";//完整url路径
            string url1 = "http://tsn.baidu.com/text2audio?tex=";//调用路径
            //必须的几个参数
            string tex = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");//本人懒省事,直接让他报现在的时间
            string cuid = "ashdajdiadaij";//用户唯一识别码,官方建议使用MAC地址
            string tok = GetToken();//Token令牌,有效期为30天,可以缓存在本地
            if (tex.Length >= 2048)//官方要求长度为小于2048位
            {
                Console.WriteLine("字符串过长!");
                return;
            }
            if (IsConnectedInternet() != true)
            {
                Console.WriteLine("您尚未联网!");
                return;
            }
            if (string.IsNullOrEmpty(tok))
            {
                Console.WriteLine("未获取到Token,请检查!");
                return;
            }

            //所有参数
            //tex 必填  合成的文本,使用UTF-8编码。小于2048个中文字或者英文数字。(文本在百度服务器内转换为GBK/后,/长度必须小于4096字节)
            //tok 必填  开放平台获取到的开发者access_token(见上面的“鉴权认证机制”段落)
            //cuid 必填  用户唯一标识,用来计算UV值。建议填写能区分用户的机器 MAC 地址或 IMEI 码,长度为60字符以内
            //ctp 必填 客户端类型选择,web端填写固定值1
            //lan 必填 固定值zh。语言选择,目前只有中英文混合模式,填写固定值zh
            //spd 选填 语速,取值0 - 15,默认为5中语速
            //pit 选填 音调,取值0 - 15,默认为5中语调
            //vol 选填 音量,取值0 - 15,默认为5中音量
            //per 选填 发音人选择, 0为普通女声,1为普通男生,3为情感合成 - 度逍遥,4为情感合成 - 度丫丫,默认为普通女声
            // aue 选填  3为mp3格式(默认); 4为pcm - 16k;5为pcm - 8k;6为wav(内容同pcm - 16k); 注意aue = 4或者6是语音识别要求的格式,但是音频内容不是语音识别要求的自然人发音,所以识别效果会受影响。


            //其他参数我就不声明了,直接写在url里了
            url = url1 + tex + "&lan=zh&cuid=" + cuid + "&ctp=1&tok=" + tok + "&vol=15&per=4&aue=3&spd=4";
            System.Diagnostics.Process.Start(url);//这里我直接让浏览器读了
        }

        static void Main(string[] args)
        {
            PalyAudio();
            Console.ReadKey();
        }
    }
}

 

c# 百度语音合成 c# 语音合成 百度 阅读详情

相关推荐

Unity AI 语音识别、语音合成、人机交互(一)

Unity AI助手语音天气播报自我介绍项目介绍思路制作准备开始 自我介绍 大家好,我是VAIN,这是我在优快云的第一篇文章,之前一直在微博博客上写文章,今后会用优快云给大家更新一些技术帖,还希望大家多多关照! 项目介绍 因为公司项目要求,今天给大家分享一个unity制作AI助手的帖子,由于网上相关的文章还是比较少的,要么就是不是特别的全面。所以分享一下,希望可以帮助到小伙伴们。 思路 1.需要将我们说的话转成文字(语音识别) 2.AI助手理解我们说的话(人机交互) 3.将AI助手的返回信息转成语音(语

VAIN的博客 1万+

C#语音朗读文本 — TTS的实现

TTS, Text To Speech的缩写,是使用语音朗读文本的技术。目前,在国内应用较多的是排队叫号系统 Windows 平台的TTS,通常使用的是微软自带的 Speech API。 Windows XP 自带的是 Speech API 5.1,默认是只支持英文的。如果要朗读中文,需要安装LangPack,里面支持简体中文,不过,是个男生的发音。 从Vista开始,默认自带的 Micro...

weixin_34162401的博客 851

基于C#与百度API的语音合成实战项目

简介:语音合成技术在现代IT应用中日益重要,百度提供的语音合成服务以其高自然度和易集成性受到广泛欢迎。本项目“百度语音合成.zip”是一个完整的C#窗体应用程序,涵盖调用百度语音合成API实现文本转语音的全流程。项目包含核心代码文件、可视化界面逻辑、API请求配置及语音播放功能,并附带视频教程与中文说明文档,帮助开发者快速上手。该技术已实际应用于“收钱快报”等业务场景,用于自动化语音播报,具备良好的实用性和扩展性。

weixin_30600615的博客 886

C#调用百度语音SKD实现语音播放

语音播放方式有很多种,但是这里主要介绍的调用百度sdk实现语音播放,需要在百度AII开放平台下载C# SDK压缩工具包 解压后,将AipSdk.dll和Newtonsoft.Json.dll中添加为引用。还需要用到BASS音频处理类库,主要是对合成的语音进行输出。 百度语音:https://ai.baidu.com BASS.NET类库下载:http://www.bass.radio...

build2024 3914

C#基于百度云语音识别

C#winform窗口基于百度云的语音识别,亲测可用,保存MP3格式录音文件在本地,在转化为WAV格式,基于百度云进行识别。

Obsidian跨设备同步实战:阿里云OSS与Remotely Save插件配置指南

本文详细介绍了如何利用阿里云OSS对象存储与Remotely Save插件,为Obsidian笔记软件搭建一个低成本、高可靠性的私有化多端同步方案。从创建OSS Bucket、配置CORS规则、生成子账户密钥,到插件安装与多设备同步策略,提供了完整的实战配置指南,有效解决Obsidian用户的跨设备同步痛点。

qsc901234567的博客 1284

C#.NET使用TTS引擎实现文语转换

C#.NET使用TTS引擎实现文语转换2007/11/07 19:45[转载] 本文讲述使用微软TTS5.1语音引擎(中文)实现文本阅读和音频输出为WAV完美解决方案。网上很多文章说的是要安装SAPI.51 SDK,而这个东西有好几十M,并且用起来比较复杂。微软官方网站上是这样写的:SAPI5.1 SDK可以从微软网站下载:http://www.microsoft.

php|nginx|python|vue|redis|linux 1980

Matlab双目相机标定

1 概述 现在有许多双目相机在出厂时就已经标定好了,用户拿到手后可以直接使用,例如Intel Realsense系列。但是有些相机出厂的时候并没有完成标定工作,因而这个时候就需要我们自己来标定。由于笔者曾改装过一个双目相机,最远可以测至50m,因此有一定的心得体会想给大家分享一下。本文主要介绍双目相机标定的整个过程,以及导出标定数据的方法。 相机标定主要分为手动标定和自动标定,手动标定比较繁琐,这里主要介绍基于matlab工具箱的自动标定方式来对双目相机进行标定。具体的相关标定细节也可以参照这篇博客:m

weixin_46133643的博客 2万+

c# 实现语音合成

开发流程如下: 创建百度应用: 创建应用之后就能看到创建完的应用和 API KEY 以及 Secret KEY了,在调用API时需传入这些配置值 详见:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index 引用 Baidu.Aip (SDK) Baidu.Aip 封闭了文字识别Ocr API 的Http请求,简化代码,提高开发效率。如果不想引用该DLL,可以自己封装Http请求方法。 C# SDK 现已开源,快速接入文档参考:https:/

chinaherolts2008的博客 919

【AI智能体】Codex 生成高质量电商套图实战操作详解

Codex 生成高质量电商套图实战操作详解

congge 4525

GEO的工作原理,以及GEO会催生出更多的爬虫岗位吗?

摘要: GEO(生成式引擎优化)是提升内容在AI搜索(如ChatGPT、Perplexity等)中引用率的新策略,核心在于优化内容的可抓取性、语义清晰度、权威性。与传统SEO不同,GEO聚焦AI的引用逻辑,需通过爬虫监控AI回答、逆向分析引用源特征(如结构化数据、权威背书),并构建自动化工具优化内容。爬虫工程师需转型为“AI可见性基础设施构建者”,重点关注高权威站点、知识库及官方信息源,同时确保技术可抓取性(如放行AI爬虫UA)。GEO的核心是从“排名”转向“被AI引用”,强调实体识别与动态对话适配。

数据知道的博客 4641

c语言设计一个语音识别程序,用 C# 开发自己的语音识别程序

开发工具:vs 2017准备工作1、注册百度账号3、在控制台点击“百度语音”服务,点击“创建应用”,填写必填项,勾选额外接口,点击立即创建获取秘钥。在应用列表中查看自己的id 用 360 软件管家安装 vs2017 创建自己的项目1、新建项目打开 vs2017,点击文件,新建项目,选择 visual C# --> windows 桌面 --> windows 窗体应用,选择自己的项目地...

weixin_30545945的博客 1817

Claude Code 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例展示如何使用 Claude Code 配合 Python 的 `ezdxf` 库,从零开始生成专业级 CAD 机械图纸。我们将绘制一个完整的法兰盘零件图,包含主视图、俯视图、标注尺寸、粗糙度标记和标题栏,最终生成标准 DXF 文件,可直接在 AutoCAD 或 FreeCAD 中打开编辑。

yueyeguzhuo的专栏 894

csharp: 百度语音合成

public string API_id = "3333"; //你的ID public string API_record = null; public string API_record_format = null; public string API_record_HZ = null; publi...

weixin_33857679的博客 125

关于 SAP UI5 应用 url 中的特殊符号 # 的作用介绍

符号在 SAP UI5 的 URL 中不仅仅是一个分隔符,更是动态路由、状态管理和深链接的关键所在。通过合理使用,开发者可以实现高效、流畅的用户体验,同时保持系统的可维护性和扩展性。通过 SAP UI5 提供的灵活路由机制,企业应用可以轻松实现复杂导航需求,同时为用户提供直观的交互体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 411

车载以太网测试-3【Wireshark介绍】

数据包捕获支持从多种网络接口(如以太网、Wi-Fi、蓝牙等)捕获数据包。可以实时捕获或从文件中读取已捕获的数据包。协议解析支持解析数百种网络协议(如 TCP/IP、HTTP、DNS、FTP 等)。能够深入解析协议头部和负载,帮助用户理解网络通信的细节。过滤功能提供强大的显示过滤器和捕获过滤器,帮助用户快速定位和分析感兴趣的数据包。支持基于协议、IP地址、端口号等多种条件的过滤。统计和分析提供多种统计工具,如流量图、会话统计、协议分层统计等。

车载网络测试工程师的博客 1989

c# dialogresult 选择文件_基于C#百度AI和科大汛飞语音合成SDK

(给DotNet加星标,提升.Net技能)转自:在水一方cnblogs.com/w2011/p/11328023.html一、百度语音合成百度语音合成C# SDK主要是基于Rest API,需要互联网调用HTTP接口,Rest API 仅支持最多512个汉字,合成的格式文件为MP3,没有其它的格式。如果想离线使用需下载SDK,Android 或IOS。1、安装语音合成 C# SDKC# ...

weixin_39605191的博客 113

YOLOv8模型压缩终极方案:LAMP剪枝实战,速度提升不掉点

一个庞大的模型虽然强大,但在实际部署,尤其是资源受限的边缘设备(如无人机、移动电话、嵌入式系统)上,却面临着严峻的挑战:高昂的内存占用、巨大的计算量以及随之而来的高延迟和高能耗。本教程从LAMP剪枝的深刻理论出发,详细解释了它如何通过最小化最坏情况下的L2失真,并借助巧妙的数学简化,最终推导出一种高效、无超参数、层自适应的剪枝策略。它如同为臃肿的模型进行一次精准的“瘦身手术”,通过移除网络中冗余或不重要的权重、神经元甚至整个结构,来显著降低模型的参数量和计算量(FLOPs),从而实现推理加速和资源节约。

LXY_LOVE36的博客 175

C# 百度语音合成

语音合成及TTS,我们尝试使用百度的语音合成技术 不过我发现 有一种缺点在于没有离线包让我有些很不舒服,可能是在线版的 原因微软语音识别技术在Windows 2000是默认集成在系统组件中 或许我们不必去寻找新的语音合成替代方案,不过在线版一旦离线 只有Game Over,Hah不过有一点好处在于使用方便适合广发开发 者,第二百度语音合成后的音频流,妹子的声音听着较舒服 如果可 以在“...

weixin_34402408的博客 333

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

基于C# 百度AI和科大汛飞语音合成SDK

一、百度语音合成 百度语音合成C#SDK主要是基于Rest API,需要互联网调用HTTP接口,Rest API仅支持最多512个汉字,合成的格式文件为MP3,没有其它的格式。如果想离线使用需下载SDK,Android或IOS。 1、安装语音合成 C# SDK C# SDK 现已开源! https://github.com/Baidu-AIP/dotnet-sdk ** 支...

weixin_30429201的博客 1132

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C#调用百度语音识别API

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.IO;

apomelo的博客 9040

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C#调用百度AI接口实现文本转音频

C#调用百度AI接口实现文本转音频 几个比较重要的点: 文件的传输:stream流对象的创建和使用; 服务器沟通:请求对象和响应对象的创建与使用 缓存文件的创建与写读(用来保存令牌) 下面上代码与窗体: 代码:(只需要在百度ai平台上申请密匙将我代码中的汉字替换掉即可) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; u

头号玩家的博客 1012

Unity3d中使用百度语音识别及语音合成【含源码】

本文首发于“洪流学堂”公众号。 洪流学堂,让你快人几步 源码地址 https://github.com/zhenghongzhi/WitBaiduAip 功能概述 1 语音识别 从麦克风录制音频 AudioClip的音频数据转换为百度语音识别的PCM16格式 百度语音识别Restful接口的封装以及一个测试场景 2 语音合成 百度语音合成Restf...

大智_Unity探路者 1万+
上一篇: C#万年历dll插件
下一篇: 关于VS无法启动iis express web 服务器的错误原因
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值