首页 > 其他分享 >语音合成与文字语音互转 Baidu.AI+ffmpeg

语音合成与文字语音互转 Baidu.AI+ffmpeg

时间:2024-06-01 20:22:06浏览次数:13  
标签:Baidu string Text System result 语音 互转 new

语音和文本互转

安装Baidu.AI

Install-Package Baidu.AI

将文本合成语音

将文本合成为语音文件主要使用百度云API中的Tts类,该类是语音合成的交互类,为使用语音合成的开发人员提供了一系列的交互方法。

Tts 类中提供了一个Synthnesis 方法,哟过来将文本合成语音,其语法如下:

参数 类型 描述
text String 合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节
option Dictionary 可选参数,用来指定合成语音的一些信息,如语速,男声、女生、音量
spd String 语速,0-9,默认为5,中语速
pit String 语调,取值0-9,默认5 中语调
vol String 音量,取值0-15,默认为5 中音量
per string 发音人选择,0为女声 1为男声 3为情感合成 度逍遥 4 为情感合成 度YY
guid string 用户唯一标识,用来区分用户,用来设置机器MAC地址或IMEI码,长度为60以内

语音识别

将语音识别为文本主要使用百度云API中的Asr类,该类是语音识别的交互类,为使用语音识别的开发人员提供了一系列的交互方法。

Asr 类中提供了一个Recognize方法,用来向远程服务上传整段语音进行识别,其语法如下:

参数 类型 描述
data byte[] 语音二进制数据,语音文件的格式,pcm或者wav或者amr, 不区分大小写
format string 语音文件的格式,pcm或者wav或者amr 不区分大小写,推荐pcm文件
rate int 采样率,16000,固定值

Recognize方法返回值

参数 类型 是否一定输出 描述
err_no int 错误码
err_msg int 错误描述
sn int 语音数据唯一标识,系统内部产生,用于debug
result int 识别结果数组,提供1~5个候选结果,string 类型为识别的字符串 UTF-8编码

Code

using Baidu.Aip.Speech;
using Sunny.UI;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;

namespace VoiceToWord
{
    public partial class Form1 : UIForm
    {
        private readonly Tts _ttsClient;  //声明TTS对象,该对象用来对语音进行操作
        private readonly Asr _asrClient;  //声明Asr对象,该对象用来识别语言文件
        string APPID = "11079594";  //自己在百度云中创建的应用的ID
        string API_KEY = "fMA2S0U0dGPHbdbn3EmtRGfz";
        string SECRET_KEY = "2d9bbfc2a45bde1056d0c1fd272fd5f2";//设置自己申请百度云账号时的SecretKey

        public Form1()
        {
            _ttsClient = new Tts(API_KEY, SECRET_KEY);
            _asrClient = new Asr(APPID, API_KEY, SECRET_KEY);
            CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnYuYinHeCheng_Click(object sender, EventArgs e)
        {
            var option = new Dictionary<string, object>();
            if (rbtnGirl.Checked)
            {  //女生
                option = new Dictionary<string, object>() {
                    {"spd",5 }, //语速
                    { "vol",7}, //音量
                    { "per",0} /*0为女声 1为男声 3为情感合成-度逍遥 4为情感合成 度YY*/
                  

                };
            }
            else if (rBtnBoy.Checked)
            {
                option = new Dictionary<string, object>()
                {
                    {"spd",5 },
                    { "vol",7},
                    { "per",1}
                };
            }
            else if (rbtnD1.Checked)
            {
                option = new Dictionary<string, object>() {
                   {"spd",5 },
                   { "vol",7},
                   {"per",3 }
               };
            }
            else if (rbtnD2.Checked) {
                option = new Dictionary<string, object>() { 
                    { "spd",5},
                    {"vol",7 },
                    { "per",4}
                };

            }
            //支持格式:pcm(不压缩) wav(不压缩) amr 压缩格式 mp3 等
            var result = _ttsClient.Synthesis(txtContent.Text, option);
            string filename = DateTime.Now.ToLongDateString()+ ".mp3";
            if (result.Success) {
                File.WriteAllBytes(filename, result.Data); //保存语音文件
            }
            System.Diagnostics.Process.Start(filename); //打开播放语音文件
        }

        private void btnSelectFile_Click(object sender, EventArgs e)
        {
            txtNeiRong.Text = "";
            OpenFileDialog file = new OpenFileDialog();
            file.Filter = "音频文件|*.pcm;*.wav;*.amr;*.mp3";
            if (file.ShowDialog() == DialogResult.OK) { 
                txtVoiceFile.Text = file.FileName;
                System.Threading.ThreadPool.QueueUserWorkItem(
                    (p_temp) => { 
                      //定义使用ffmpeg 转换视频命令,将格式转换为采用16k采样频率的wav文件
                      string cmd=@"ffmpeg-i"+txtVoiceFile.Text+" -ar 16000 ac 1 -f wav temp.wav";
                        Process p = new Process();  //创建一个进程
                        p.StartInfo.FileName = "cmd.exe"; 
                        p.StartInfo.UseShellExecute = false; //是否使用操作系统的Shell 启动
                        p.StartInfo.RedirectStandardInput = true;//接收来自调用程序的输入信息
                        p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                        p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                        p.StartInfo.CreateNoWindow = true; //不显示程序窗体
                        p.Start(); //启动程序
                                   //向cmd窗口发送输入信息
                        p.StandardInput.WriteLine(cmd+"&exit");
                        p.StandardInput.AutoFlush = true; //等待程序执行完退出进程
                        p.WaitForExit();
                        p.Close();
                        System.Threading.Thread.Sleep(1000);
                        var data = File.ReadAllBytes(txtVoiceFile.Text);//将文本内容保存为字节数组,按指定码率识别字节数组内容
                        var result = _asrClient.Recognize(data, "pcm", 16000);
                        txtNeiRong.Text = "识别内容:" + Environment.NewLine + result + Environment.NewLine + "\n\n提取的文字" +
                        Environment.NewLine;
                        if (result["err_msg"].ToString() == "success.") {
                            txtNeiRong.Text += result["result"];//显示内容
                            //File.Delete(txtVoiceFile.Text);
                        }

                    }
                    );
            }
        }
    }
}

运行效果:
image

image

标签:Baidu,string,Text,System,result,语音,互转,new
From: https://www.cnblogs.com/sundh1981/p/18226339

相关文章

  • ChatTTS,语气韵律媲美真人的开源TTS模型,文字转语音界的新魁首,对标微软Azure-tts
    前两天2noise团队开源了ChatTTS项目,并且释出了相关的音色模型权重,效果确实非常惊艳,让人一听难忘,即使摆在微软的商业级项目Azure-tts面前,也是毫不逊色的。ChatTTS是专门为对话场景设计的文本转语音模型,例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万......
  • java调用科大讯飞离线语音合成SDK --内附完整项目
    科大讯飞语音开放平台基础环境搭建1.用户注册注册科大讯飞开放平台账号2.注册好后先创建一个自己的应用 创建完成后进入应用选择离线语音合成(普通版)可以看到我们开发需要的SDK,选择windowsMSC点击下载。3.选择你刚刚创建的应用,选择windows系统,选择离线语言合成(普通版)......
  • 语音转文字怎么设置?告诉你办公效率翻倍的秘密
    #周一很需要撒一把糯米#每个周日晚上,想必大家都会开始对周一要上班这件事感到烦躁又焦虑。然而有研究表明,工作中偷得浮生半日闲所带来的愉悦感竟超过了美食带来的快感。作为一名打工人,如何在保持工作效率的同时,也能享受那份轻松的摸鱼时光呢?答案就在于那些能提升工作效率的......
  • 怎么免费语音转文字?分享5个语音转文字的方法
    将语音转换成文字的任务,通常被认为是一项耗时且容易出错的工作。然而,这并不总是因为注意力不集中,而是传统转写方法本身的限制所致。好在,现在市面上出现了许多高效的语音转文字软件,它们能够显著提高转录的效率和准确性。本文将向大家展示这些语音转文字怎么搞,帮助大家找到解决......
  • 柬埔寨语翻译通App上架啦!支持高棉语翻译成中文,中柬互译,高棉语OCR文字识别提取,提高工作
    大家好!有个超级棒的消息要告诉大家——柬埔寨语翻译通小程序已经上架啦!不论你是安卓还是苹果用户,都可以轻松下载使用!只要微信搜一搜,翻译之路畅通无阻!这不仅仅是一个翻译工具,它还支持高棉语中文双语翻译,翻译结果支持语音朗读,翻译记录自动保存!跟着说跟着读,高棉语词汇轻松掌握......
  • GPT-SOVITS:声音克隆大师,一键重塑,精准复制任何角色语音与语调“
    语音技术在人工智能的驱动下,正在以前所未有的速度推进。GPT-SoVITS-WebUI正是这一变革的先驱它利用少量的声音源,可以快速地训练出一个语音合成(Text-to-Speech,简称TTS)模型。这个强大的Web界面工具不仅提供了零次学习和少量次学习的文本到语音(TTS)功能,还支持跨语言的语音转换,为语......
  • 神经网络应用场景——语音识别
    神经网络在语音识别领域的应用场景非常广泛,以下是几个典型的应用场景,结合相关数字和信息进行阐述:智能助手:语音助手如苹果的Siri、亚马逊的Alexa和谷歌的GoogleAssistant等,都广泛使用了基于神经网络的语音识别技术。这些智能助手能够理解用户的语音命令,并提供相应的服务,如......
  • Google使用AI改进了 Sheets;开源视觉语言模型llama3v;开源情绪语音模型ChatTTS;
    ✨1:GooglehasimprovedSheetswithAI.Google使用AI改进了Sheets您可以使用Gemini处理您的数据并将其变成老师。优化您的数据Gemini了解您的数据并提出改进建议。例如,它可以将重复数据转换为更实用的下拉框。解释数据通过单击双子座图标,您可以自动获......
  • Python中的pyttsx3库:文本到语音转换的利器
    pyttsx3是一个跨平台的文本到语音转换库,它可以在没有安装其他依赖项的情况下在Windows、Linux和macOS上运行。pyttsx3使用系统自带的TTS(文本到语音)引擎,因此可以确保在各种操作系统上都具有较高的稳定性和可用性。官方文档:https://pyttsx3.readthedocs.io/en/latest/https://py......
  • 阿里云语音合成TTS直播助手软件开发
    阿里云的TTS比较便宜,效果比不了开源克隆的那种,比纯机器人效果好一点点阿里云samberthttps://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13Sambert系列模型1万字1元,每主账号每模型每月3万字免费创建API-KEYhttps://dashscope.console.aliyun.com/apiK......