c# 实现语音合成

本文主要讨论C#开发使用百度语音合成API在线将文本内容合成语音,保存为 MP3 文件,本文最后会提供本安全源代码以及运行软件包,如有需要可自行下载

开发流程如下:

1. 创建百度应用:

  创建应用之后就能看到创建完的应用和 API KEY 以及 Secret KEY了,在调用API时需传入这些配置值

  详见:https://console.bce.baidu.com/ai/#/ai/ocr/overview/index

2. 引用 Baidu.Aip (SDK)

  Baidu.Aip 封闭了文字识别Ocr API 的Http请求,简化代码,提高开发效率。如果不想引用该DLL,可以自己封装Http请求方法。

  C# SDK 现已开源,快速接入文档参考:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp

3. 调用API,

  这里仅展示通用及高精度识别示例,特殊场景识别,详见官方文档:https://ai.baidu.com/ai-doc/SPEECH/Jk4nlz6gp

/// <summary>
  /// 语音合成
  /// </summary>
  /// <param name="reqItem">请求相关参数</param>
  /// <param name="destPath">mp3文件保存路径</param>
  /// <param name="synthesisEvent">状态事件</param>
  /// <returns></returns>
  public static bool Synthesis(ReqSynthesis reqItem, string destPath, SynthesisEvent synthesisEvent)
  {
   bool callResult = false;

   try
   {
    synthesisEvent("语音合成初始化...");
    // 百度应用配置
    var apiKey = ConfigUtil.GetConfigStr(EnumConfigKey.SpeechAPI_Key);
    var secretKey = ConfigUtil.GetConfigStr(EnumConfigKey.SpeechSECRET_KEY);
    if (!RiverAuth.Instant.CheckSynthesis(apiKey, secretKey))
    {
     return false;
    }
    var client = new Baidu.Aip.Speech.Tts(apiKey, secretKey);
    client.Timeout = 60000; // 修改超时时间
    var option = new Dictionary<string, object>()
    {
     {"vol", reqItem.vol}, //
     { "pit", reqItem.pit}, //
     {"spd", reqItem.spd}, // 语速
     {"per", reqItem.per} // 发音人,4:情感度丫丫童声
    };
    synthesisEvent("开始语音合成...");
    var result = client.Synthesis(reqItem.tex, option);
    // 保存文件
    if (result.Success) // 或 result.Success
    {
     File.WriteAllBytes(destPath, result.Data);
     synthesisEvent("语音合成返回成功,文件:" + destPath);
     callResult = true;
    }
    else
    {
     synthesisEvent(string.Format("语音合成失败, 错误码:[{0}], 原因:{1}", result.ErrorCode, result.ErrorMsg));
    }
    RiverAuth.Instant.EndCallEvent();
   }
   catch (Exception ex)
   {
    synthesisEvent("语音合成失败,原因:" + ex.Message);
    LogHelper.LogError(ex, "语音合成");
   }
   return callResult;
  }
 }
 /// <summary>
 /// 语音合成请求
 /// </summary>
 [Serializable]
 public class ReqSynthesis
 {
  public string tex { get; set; }//合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节 必填项
  public string cuid { get; set; }// 用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内 否
  public int spd { get; set; }//语速,取值0-9,默认为5中语速 否
  public int pit { get; set; }//音调,取值0-9,默认为5中语调 否
  public int vol { get; set; }//音量,取值0-15,默认为5中音量 否
  public int per { get; set; }//发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女
 }
 /// <summary>
 /// 语音转文字返回结果
 /// </summary>
 public class RetSpeech
 {
  public string corpus_no { get; set; }
  public string err_msg { get; set; }
  public int err_no { get; set; }
  public string[] result { get; set; }
  public string sn { get; set; }
 }

4. 语音合成最后保存为 MP3 文件

5. 源代码及软件包下载

软件开源代码地址(项目集成文字识别、语音合成、语音识别):https://gitee.com/bidev_admin/river-int-ai.git

运行软件包下载地址(.Net Framework 4.5): https://pan.baidu.com/s/1z-WFDGHhEP8tqLqwp9I0Mw  提取码:  r3sk

作者:沐汐 Vicky
出处:http://www.cnblogs.com/EasyInvoice

以上就是c# 实现语音合成的详细内容,更多关于c# 语音合成的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#基于UDP实现的P2P语音聊天工具

    语音获取 要想发送语音信息,首先得获取语音,这里有几种方法,一种是使用DirectX的DirectXsound来录音,我为了简便使用一个开源的插件NAudio来实现语音录取. 在项目中引用NAudio.dll //------------------录音相关----------------------------- private IWaveIn waveIn; private WaveFileWriter writer; private void LoadWasapiDevicesCombo(

  • C#中调用SAPI实现语音合成的2种方法

    我们都知道现在的语音合成TTS是可以通过微软的SAPI实现的,好处我就不多说了,方便而已,因为在微软的操作系统里面就自带了这个玩意,主要的方式有两种: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑.(要引入SpeechLib,好像在项目上点引用,然后选到系统COM吧,好久没弄,记不清楚了) 2.使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑. 其实不管是哪一种,都是调用SAPI

  • c# 开发语音识别程序

    AI 平台:http://ai.baidu.com/ 开发工具:vs 2017 准备工作 1.注册百度账号 2.登录百度 AI 开发平台,http://ai.baidu.com/ 3.在控制台点击"百度语音"服务,点击"创建应用",填写必填项,勾选额外接口,点击立即创建获取秘钥.在应用列表中查看自己的id 创建自己的项目 1.新建项目 打开 vs2017,点击文件,新建项目,选择 visual C# --> windows 桌面 --> windows

  • C#中调用SAPI实现语音识别的2种方法

    通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR.下面我们就介绍并贴出相关代码.主要有两种方式: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑.(注意要引入系统组件SpeechLib,XP要安装识别引擎) 2.使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑. 其实不管是哪一种,都是调用SAPI,可能后一种代码比较简单. 使用第一种方式,需要注意在COM

  • C#实现语音视频录制-附demo源码

    在很多语音视频软件系统中,经常有将实时的音频或视频录制为文件保存到磁盘的需求,比如,视频监控系统中录制监控到的视频.视频会议系统中录制整个会议的过程.语音通话系统中录制完整的对话内容.等等. MFile组件(Oraycn.MFile.dll)是傲瑞实用组件之一,它可以将原始的语音数据和视频数据按照指定的格式进行编码,并将它们写入到视频文件(如.mp4)中. 一.缘起 最近正在做的一个网络招聘平台的项目,其中有一个模块是这样的,应聘者可以通过该系统的客户端录制自己的视频(自我介绍)上传到服务器,而

  • C#语音识别用法实例

    本文实例讲述了C#语音识别用法.分享给大家供大家参考.具体分析如下: C#可以利用微软操作系统自动的语音识别功能,读取信息.步骤如下: 1.  在项目中添加  ""  引用 2.  引入命名空间: 复制代码 代码如下: using SpeechLib; 3.  读取的代码: 复制代码 代码如下: SpeechVoiceSpeakFlags flag = SpeechVoiceSpeakFlags.SVSFlagsAsync;     SpVoice voice = new SpVoic

  • C# 语音功能的实现方法

    首先要安装SpeechSDK5.1 开发包和SpeechSDK5.1 Langague Pack(中英文) 语言包,不过VS2010里是自带SpeechSDK5.0的com组件的,也可以用. 简单讲一下四个方法: 朗读时,使用 复制代码 代码如下: voice.Speak(string,SpeechVoiceSpeakFlags.SVSFlagsAsync); 暂停,使用 复制代码 代码如下: voice.Pause(); 从暂停中继续刚才的朗读,使用 复制代码 代码如下: voice.Resu

  • XML在语音合成中的应用

    互联网以及和它相关的一切现在似乎随处可见.您也许已经试过接到夜间电话推销员的语音电话.又或者曾经接到过当地药店给您的处方通知.现在,有一种新技术可以使用语音合成结合XML技术传送语音信息了. 以语音传递信息的手段并不是什么新东西.它是我们几千年来一直使用的交流方法.而且,从一台计算机那里接收到电话也并非什么新发明.许多语音技术到现在已经大行其道了,从传真机.自动拨号器到集成语音回复系统(IVR).电话当然是它最普遍的应用. 传统的语音系统使用预先录制好的样本.词典和音素来创建我们所听到的声音.然

  • Android Studio应用开发集成百度语音合成使用方法实例讲解

    首先,语音合成是指将文本信息转换成声音.意思就是将文本转化为声音,让你的应用开口说话.国内在业内比较有名的第三方语音合成平台有百度语音和科大讯飞. 本文集成的是百度语音合成,其主要特点是: 完全永久免费 业界首创完全永久免费新形式,为开发者提供最流畅最自然的语音合成服务.完全免费,永久使用,彻底摆脱限制. 离线在线融合模式 SDK可以根据当前网络状况,自动判断使用本地引擎还是云端引擎进行语音合成,再也不用担心流量消耗! 多语言多音色可选 中文普通话.中英文混读.男声.女声任你选,更支持语速.音调

  • 20.5 语音合成(百度2016年2月29日发布的tts引擎)

    一.简介 编写手机App时,有时需要使用文字转语音(Text to Speech)的功能,比如开车时阅读收到的短信.导航语音提示.界面中比较重要的信息通过语音强调.--等. 由于Android自带的Pico TTS并不支持中文,所以要既能阅读中文文本,还能阅读英文文本,必须下载第三方提供的能说中文的语音包. 二.申请百度tts授权 本节以百度2016年2月29日发布的"离在线融合语音合成SDK_Android 2.2.3版"为例说明用C#实现语音合成的基本用法.之所以选择百度语音合成来

  • Python Web版语音合成实例详解

    前言 语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速.音调.音量设置,打破传统文字式人机交互的方式,让人机沟通更自然. 应用场景 将游戏场景中的公告.任务或派单信息通过语音播报,让玩家玩游戏或配送员送货的同时,也可接听新任务. 文学小说类软件,可以利用百度语音合成技术将文学小说作品进行高质量的朗读,流畅清晰,解放双眼,畅听世界. 软件架构 Python3.7.2.Django2.1.7.baidu-aip(百度语音API) 案例 这里只展示部分代码,有兴趣的同学可以自

  • python腾讯语音合成实现过程解析

    一.腾讯语音合成介绍 腾讯云语音合成技术(TTS)可以将任意文本转化为语音,实现让机器和应用张口说话. 腾讯TTS技术可以应用到很多场景,比如,移动APP语音播报新闻:智能设备语音提醒:依靠网上现有节目或少量录音,快速合成明星语音,降低邀约成本:支持车载导航语音合成的个性化语音播报.(废话一大堆)... 二.腾讯语音合成python SDK文档 安装 Python SDK 前,先获取安全凭证.在第一次使用云 API 之前,用户首先需要在腾讯云控制台上申请安全凭证,安全凭证包括 SecretID

  • Python实现语音识别和语音合成功能

    声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移. 通过傅里叶变换,可以将时间域的声音函数分解为一系列不同频率的正弦函数的叠加,通过频率谱线的特殊分布,建立音频内容和文本的对应关系,以此作为模型训练的基础. 案例:画出语音信号的波形和频率分布,(freq.wav数据地址) # -*- encoding:utf-8 -*- import numpy as np import numpy.fft as nf import scipy.io.wavfil

  • Android实现语音合成与识别功能

    Android语音合成与语音识别,供大家参考,具体内容如下 这里调用科大讯飞语音的API,语音云开放平台介绍 调用科大讯飞语音的API,需要加添库文件Msc.jar,添加libmsc.so文件,还需添加权限,具体步骤可参看SDK里的文档 参看开发的文档写了一个简单的语音合成和识别demo,图示如下 在EditText里输入文字,点击语音合成,可以实现文字转化为语音 点击语音合成,输入语音,识别的文字以提示的形式显示,并且显示在EditText中 主要代码如下,注意appid需要自己申请 pack

  • vue实现百度语音合成的实例讲解

    这里我完全依照百度提供的语音合成api来做:https://ai.baidu.com/docs#/TTS-Online-Node-SDK/top 直接去看node.js SDK. 1.换取access_token: 参考:https://ai.baidu.com/docs#/TTS-API/top,在这里用浏览器换取token 2.下载sdk依赖: npm install baidu-aip-sdk 完整代码(非原创,参考了一个demo,但是很久以前写的找不到了): btts(text) { c

  • python3实现语音转文字(语音识别)和文字转语音(语音合成)

    话不多说,直接上代码运行截图  1.语音合成 -------> 执行: 结果: 输入要转换的内容,程序直接帮你把转换好的mp3文件输出(因为下一步–语音识别–需要.pcm格式的文件,程序自动执行格式转换,同时生成17k.pcm文件,暂时不用管,(你也可以通过修改默认参数改变文件输出的位置,名称及是否进行pcm转换 <------- 2.语音处理 ----> 方便起见, 我们直接运行语音处理程序,识别我们上一步的17k.pcm文件: What?识别居然出现了点错误,不过不用担心,博主已经调

随机推荐