精华内容
下载资源
问答
  • 百度语音合成

    2018-05-29 10:29:21
    下载百度语音合成Sample1:添加:assests(:离线语音合成需要),libs2:离线语音 初始化 时间长,最好service中先初始化public class InitSpeechSynthesizer { private Context context; private ...

    下载百度语音合成Sample

    1:添加:assests(:离线语音合成需要),libs

    2:离线语音 初始化 时间长,最好service中先初始化

    public class InitSpeechSynthesizer {
        private Context context;
        private SpeechSynthesizer speechSynthesizer;
        public InitSpeechSynthesizer(Context context,SpeechSynthesizer speechSynthesizer){
            this.context=context;
            this.speechSynthesizer=speechSynthesizer;
            init();
        }
    
        private void init(){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        speechSynthesizer.setContext(context);
                        speechSynthesizer.setSpeechSynthesizerListener(new MySpeechSynthesizer()); //listener是SpeechSynthesizerListener 的实现类,需要实现您自己的业务逻辑。
                        speechSynthesizer.setAppId("11303697");
                        speechSynthesizer.setApiKey("lbLbZmct0UCxNtESOsQqWkvR","2wQdDWiGQCG5i8f0IuNuthGmvPiltjpA");
                        speechSynthesizer.auth(TtsMode.MIX); // 离在线混合
                        //设置网络模式
                        speechSynthesizer.setParam(SpeechSynthesizer.PARAM_MIX_MODE, SpeechSynthesizer.MIX_MODE_DEFAULT);
                        speechSynthesizer.setStereoVolume (1.0f, 1.0f);
                        speechSynthesizer.initTts(TtsMode.MIX); // 初始化离在线混合模式,如果只需要在线合成功能,使用 TtsMode.ONLINE
                        OfflineResource offlineResource = new OfflineResource(context,OfflineResource.VOICE_DUXY);  //离线模式
                        speechSynthesizer.loadModel(offlineResource.getModelFilename(),offlineResource.getTextFilename());
                    } catch (Exception e) {
                        Log.i("tag",e.toString());
                    }
                }
            }).start();
        }
    
        class OfflineResource {
    
            public static final String VOICE_FEMALE = "F";
    
            public static final String VOICE_MALE = "M";
    
    
            public static final String VOICE_DUYY = "Y";
    
            public static final String VOICE_DUXY = "X";
    
            private static final String SAMPLE_DIR = "baiduTTS";
    
            private AssetManager assets;
            private String destPath;
    
            private String textFilename;
            private String modelFilename;
    
            private HashMap<String, Boolean> mapInitied = new HashMap<String, Boolean>();
    
            public OfflineResource(Context context, String voiceType) throws IOException {
                context = context.getApplicationContext();
                this.assets = context.getApplicationContext().getAssets();
                this.destPath = new DataHandler(context).getDir();
                setOfflineVoiceType(voiceType);
            }
    
            public String getModelFilename() {
                return modelFilename;
            }
    
            public String getTextFilename() {
                return textFilename;
            }
    
            //assets下 百度 声音文件名
            private void setOfflineVoiceType(String voiceType) throws IOException {
                String text = "bd_etts_text.dat";
                String model;
                if (VOICE_MALE.equals(voiceType)) {
                    model = "bd_etts_common_speech_m15_mand_eng_high_am-mix_v3.0.0_20170505.dat";
                } else if (VOICE_FEMALE.equals(voiceType)) {
                    model = "bd_etts_common_speech_f7_mand_eng_high_am-mix_v3.0.0_20170512.dat";
                } else if (VOICE_DUXY.equals(voiceType)) {
                    model = "bd_etts_common_speech_yyjw_mand_eng_high_am-mix_v3.0.0_20170512.dat";
                } else if (VOICE_DUYY.equals(voiceType)) {
                    model = "bd_etts_common_speech_as_mand_eng_high_am_v3.0.0_20170516.dat";
                } else if(SAMPLE_DIR.equals(voiceType)){
                    model = "bd_etts_common_speech_as_mand_eng_high_am_v3.0.0_20170516.dat";
                }else{
                    throw new RuntimeException("voice type is not in list");
                }
                textFilename = copyAssetsFile(text);
                modelFilename = copyAssetsFile(model);
    
            }
    
    
            private String copyAssetsFile(String sourceFilename) throws IOException {
                String destFilename = destPath + "/" + sourceFilename;
                boolean recover = false;
                Boolean existed = mapInitied.get(sourceFilename); // 启动时完全覆盖一次
                if (existed == null || !existed) {
                    recover = true;
                }
                copyFromAssets(assets, sourceFilename, destFilename, recover);
                Log.i(TAG, "文件复制成功:" + destFilename);
                return destFilename;
            }
    
            private void copyFromAssets(AssetManager assets, String source, String dest, boolean isCover)
                    throws IOException {
                File file = new File(dest);
                if (isCover || (!isCover && !file.exists())) {
                    InputStream is = null;
                    FileOutputStream fos = null;
                    try {
                        is = assets.open(source);
                        String path = dest;
                        fos = new FileOutputStream(path);
                        byte[] buffer = new byte[1024];
                        int size = 0;
                        while ((size = is.read(buffer, 0, 1024)) >= 0) {
                            fos.write(buffer, 0, size);
                        }
                    } finally {
                        if (fos != null) {
                            try {
                                fos.close();
                            } finally {
                                if (is != null) {
                                    is.close();
                                }
                            }
                        }
                    }
                }
            }
    
        }
    
        class MySpeechSynthesizer implements SpeechSynthesizerListener {
    
            @Override
            public void onSynthesizeStart(String s) {
                Log.i("tag","start");
            }
    
            @Override
            public void onSynthesizeDataArrived(String s, byte[] bytes, int i) {
    
            }
    
            @Override
            public void onSynthesizeFinish(String s) {
    
            }
    
            @Override
            public void onSpeechStart(String s) {
    
            }
    
            @Override
            public void onSpeechProgressChanged(String s, int i) {
    
            }
    
            @Override
            public void onSpeechFinish(String s) {
    
            }
    
            @Override
            public void onError(String s, SpeechError speechError) {
    
            }
        }
    

    }

    getDir(); 定义语音输出目录

    3:离线语音 初始化 时间长,最好service中先初始化 speechSynthesizer = StudyService.speechSynthesizer;

    speeckSynthesizer.speak( string);


    展开全文
  • Android百度语音合成语音识别Demo Android百度语音合成语音识别Demo Android百度语音合成语音识别Demo Android百度语音合成语音识别Demo
  • 问题:百度语音合成,浏览器默认拒绝自动播放音频,需要自动播放的话得手动设置注意:还需要一个token1.下载npm install baidu-aip-sdk2.vue文件百度语音,浏览器默认拒绝自动播放音频,需要的话得手动设置ex...

    文章:

    看完以上三篇基本demo可以成功

    场景:项目有问题的时候,预警弹框弹出,音频开始播报问题。可能第一条未读完,第二条预警弹框也出来了,这个时候要保证两条音频有序播放。

    问题:百度语音合成,浏览器默认拒绝自动播放音频,需要自动播放的话得手动设置

    注意:还需要一个token

    1.下载

    npm install baidu-aip-sdk

    2.vue文件

    百度语音,浏览器默认拒绝自动播放音频,需要的话得手动设置

    export default {

    data(){

    return{

    list:[],//保存音频

    }

    },

    mounted(){

    this.btts('银河航天')

    setTimeout(()=>{

    this.btts('你最最最最最好看')

    },1000)

    setTimeout(()=>{

    this.btts('哈哈哈哈')

    },1200)

    // 以上三次模拟预警弹框,弹框一出开始播放,第二条语音在第一条音频播完紧跟上。

    // 计时器保证三条音频可以紧跟上

    this.playTime = setInterval(()=>{

    this.play()

    },1000)

    },

    destroyed(){

    clearInterval(this.playTime)

    },

    methods:{

    play(){

    // console.log(this.list,'1222222222222')

    if(this.list.length){

    // 播放

    var audio = new Audio();

    audio.setAttribute('src', this.list[0].src);

    audio.play();

    audio=null;

    // 及时清除计时器,避免重叠

    clearInterval(this.playTime)

    // 在第一条音频播放时间后重新开启计时器

    this.playTime = setInterval(()=>{

    this.play()

    },this.list[0].size)

    // 及时删除数组0

    this.list.splice(0,1)

    }

    },

    btts(text) {

    console.log(text,'文本');

    //以下参数参考api文档,token和人的声音音色之类的参数

    var param={

    tex: text,//合成的文本

    tok: '24.XXXXXXXXXXXX',//这个token要换成自己的

    spd: 5,//默认为5中语速

    pit: 5,//5中语调

    vol: 15,//音量,取值0-15,默认为5中音量

    per: 4,//基础音库

    ctp:1,//web

    lan:'zh'//中文

    };

    var url = 'http://tsn.baidu.com/text2audio';

    var p = param || {};

    var that = this;

    var xhr = new XMLHttpRequest();

    xhr.open('POST', url);

    // 创建form参数

    var data = {};

    for (var p in param) {

    data[p] = param[p]

    }

    // 赋值预定义参数

    data.cuid = data.cuid || data.tok;

    // data.ctp = 1;

    // data.lan = data.lan || 'zh';

    //以上为封装请求的参数

    // 序列化参数列表

    var fd = [];

    for(var k in data) {

    fd.push(k + '=' + encodeURIComponent(data[k]));

    }

    var frd = new FileReader();

    xhr.responseType = 'blob';

    xhr.send(fd.join('&'));

    //请求返回结果处理

    xhr.onreadystatechange = function() {

    if (xhr.readyState == 4) {

    if (xhr.status == 200) {

    if (xhr.response.type == 'audio/mp3') {

    // 保存数据

    that.list.push({

    src:URL.createObjectURL(xhr.response),

    size:xhr.response.size

    })

    }else{

    //这里如果百度语音合成的接口返回类型不是audio/mp3,是json的话,代表你的参数有问题,返回结果失败,具体可以查看api文档

    alert("调用语音合成接口token已失效!");

    }

    }else{

    alert("语音合成接口调用失败!");

    }

    }

    }

    }

    }

    }

    展开全文
  • 调用百度语音合成API概述开通语音合成服务创建语音技术应用使用Qt调用百度语音合成API 概述 本文介绍了使用Qt调用百度语音合成API的详细过程,调用过程十分简单,关键在于掌握获取个人的access_token。首先必须有...

    概述

    本文介绍了使用Qt调用百度语音合成API的详细过程,调用过程十分简单,关键在于掌握获取个人的access_token。首先必须有百度账号,账号注册过程不在赘述。(注:软件环境,Qt5.14.2;)

    开通语音合成服务

    进入百度云主页,按下图顺序找到语音合成服务并开通。
    在这里插入图片描述
    在这里插入图片描述

    创建语音技术应用

    开通服务之后,进入控制台,在控制台左侧选择语音技术,进入,点击创建应用。这里我已创建好一个语音合成应用。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    创建成功后可以看到APIKey和SecretKey,记录下这两个值,接下来使用其获取access_token。
    在这里插入图片描述

    使用Qt调用百度语音合成API

    百度语音技术文档
    在这里插入图片描述
    1.获得access_tocken
    方法:将自己的APIKey和APISecret分别填入下述网址,APIKey对应client_id,APISecret对应client_secret,然后在浏览器中访问此网址,返回的数据中,有一条就是我们需要的access_token。

    // appKey = Va5yQRHl********LT0vuXV4
    // appSecret = 0rDSjzQ20XUj5i********PQSzr5pVw2
    https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHl********LT0vuXV4&client_secret=0rDSjzQ20XUj5i********PQSzr5pVw2
    

    链接修改正确后,访问,有一项access_token,记录此值。

    {
        "access_token": "1.a6b7dbd428f731035f771b8d********.86400.1292922000-2346678-124328",
        "expires_in": 2592000,
        "refresh_token": "2.385d55f8615fdfd9edb7c4b********.604800.1293440400-2346678-124328",
        "scope": "public audio_tts_post ...",
        "session_key": "ANXxSNjwQDugf8615Onqeik********CdlLxn",
        "session_secret": "248APxvxjCZ0VEC********aK4oZExMB",
    }
    

    2.获得合成接口

    接下来拼接参数,拼接参数后,即可在代码中使用参数链接,获得相应文本的语音数据。将下述链接中的tok值替换为自己的access_token,tex值我们在Qt调用时修改,tex值即为需要转为语音的文本内容。本文使用GET调用方式,还需要在下述链接中加入cuid参数,cuid中填写本机MAC地址。查看本机MAC地址的方法很多,不再赘述。访问接口,可以下载MP3文件。

    http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=abcdxxx&tok=1.a6b7dbd428f731035f771b8d****.86400.1292922000-2346678-124328&tex=%e7%99%be%e5%ba%a6%e4%bd%a0%e5%a5%bd&vol=9&per=0&spd=5&pit=5&aue=3
    // 这是一个正常MP3的下载url
    // tex在实际开发过程中请urlencode2次
    

    最终的接口链接为

    "http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=xx-xx-xx-xx-xx-xxcuid填写本机的MAC地址&tok=换成自己的&vol=9&per=0&spd=5&pit=5&aue=3&per=4&tex="
    

    3.Qt调用
    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        media_player =new QMediaPlayer(this);
        connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(texttospeech()));
    }
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    void MainWindow::texttospeech()
    {
           QString text=ui->lineEdit->text();
           //修改链接,cuid填写本机MAC地址,tok换成自己的
           QByteArray url="http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid=xx-xx-xx-xx-xx-xxcuid填写本机的MAC地址&tok=换成自己的&vol=9&per=0&spd=5&pit=5&aue=3&per=4&tex=";
           url.append(QUrl::toPercentEncoding(text));
           //播放url里面的音频
           media_player->setMedia(QUrl::fromLocalFile(url));
           media_player->play();
    }
    

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include<QMediaPlayer>
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
        QMediaPlayer* media_player;
    private slots:
        void texttospeech();
    private:
        Ui::MainWindow *ui;
    };
    #endif // MAINWINDOW_H
    

    main.cpp

    #include "mainwindow.h"
    #include <QApplication>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
        return a.exec();
    }
    

    界面只有两个控件,非常简单。
    在这里插入图片描述

    Qt工程下载链接

    点击下载工程,免费链接,不需要积分。可能需要关注一下,下载完成,取消关注即可。

    展开全文
  • 百度语音合成源码

    2017-04-30 10:58:38
    该源码包括百度语音合成和聚合数据--图灵机器人自动回复
  • 百度语音合成中有对应的webapi可以使用,这个相对比较简单,废话不多说直接上代码吧。代码比较简单,老规矩不懂的在下方评论留言,觉得好就点个赞,转发请注明出处:https://blog.csdn.net/baidu_21919557;var ...

    百度语音合成中有对应的webapi可以使用,这个相对比较简单,废话不多说直接上代码吧。代码比较简单,老规矩不懂的在下方评论留言,觉得好就点个赞,转发请注明出处:https://blog.csdn.net/baidu_21919557;

    var tokenUrl = "https://openapi.baidu.com/oauth/2.0/token";

    var client_id = "client_id ";//此处为申请的client_id;

    var client_secret = "client_secret ";/此处为申请的client_secret ;

    var access_token;

    var data = "grant_type=client_credentials&client_id="+client_id+"&client_secret="+client_secret;

    var p = document.createElement("audio");//创建一个潜在的audio播放器

    mui("body").on("tap","#play",function(){

    var tex = document.getElementById("content").value.replace(/[\r\n]/g,"").replace(/\ +/g,"").replace(/-/g, '').trim();//对文本进行去空格和换行;

    var a=0,b=0,c=0;

    var contentArray = new Array();

    if(tex.length/500>=0){//接口上传限制字数,避免出现接口腻出,限制上传字数

    for (var i = 0; i < tex.length/500; i++) {

    a = a + 500;

    splitTex = tex.slice(b,a);

    b=a;

    contentArray.push(splitTex);

    }

    }

    mui.ajax({

    type:"get",

    url:tokenUrl,

    data:data,

    async:true,

    success:function(resp){

    if(resp.access_token){

    access_token = resp.access_token;

    var shibieUrl = "http://tsn.baidu.com/text2audio";

    tex = encodeURI(encodeURI(contentArray[0]));

    var data = "tex="+tex+"&tok="+access_token+"&cuid=00:00:00:00:00:00&ctp=1&lan=zh&spd=5&pit=5&vol=5&per=0&aue=3";

    p.controls="controls";

    p.src = shibieUrl+"?"+data;

    p.play();

    c++;

    }else{

    }

    },

    error:function(error){

    }

    });

    setTimeout(function(){

    p.addEventListener('ended', function () {

    if(contentArray.length>0&&c<=contentArray.length){

    var shibieUrl = "http://tsn.baidu.com/text2audio";

    tex = encodeURI(encodeURI(contentArray[c]));

    var data = "tex="+tex+"&tok="+access_token+"&cuid=00:00:00:00:00:00&ctp=1&lan=zh&spd=5&pit=5&vol=5&per=0&aue=3";

    p.src = shibieUrl+"?"+data;

    p.play();

    c++;

    }else{

    c=0;

    }

    });

    },500);

    });

    mui("body").on("tap","#puase",function(){

    if(p.paused)                     {

    p.play();

    }else{

    p.pause();

    }

    });

    展开全文
  • 调用百度语音合成的python脚本,输入文字,像服务器发送请求,接受合成语音的wav文件,输出保存到wav。
  • 使用Qt编写的调用百度语音合成API小例子,软件版本:Qt5.14.2,工程实现了将输入的文本信息转为语音并播放的功能。
  • 百度语音合成TTS

    千次阅读 2018-11-26 22:36:53
    百度语音合成TTS3 百度语音合成一段十秒左右的音频的文字限制 3 百度语音合成一段十秒左右的音频的文字限制 Baidu Online TTS 10秒语音文字限制: Test Text: 假如生活欺骗了你, 不要悲伤,不要心急! ...
  • 百度语音合成,并播放!
  • 百度语音合成精简版,我参照文档合成的源码, https://blog.csdn.net/qq_31939617/article/details/80176085
  • 一、旧版本百度语音合成http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text=*****直接引用该接口,在text后面加自定义文字的UTF-8编码,在js中可以用encodeURI(文本)编码,将返回的值拼接在...
  • 一、旧版本百度语音合成http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text=*****直接引用该接口,在text后面加自定义文字的UTF-8编码,在js中可以用encodeURI(文本)编码,将返回的值拼接在...
  • Python百度语音合成

    千次阅读 2018-06-21 19:49:29
    Python百度语音合成1、API地址:http://ai.baidu.com/docs#/TTS-Online-Python-SDK/top2、步骤: 1、安装Python扩展 pip install baidu-aip 2、去百度语音合成后台获取秘钥...
  • 百度语音合成系统demo是一款功能强大的文字转语音软件,能够帮助用户将输入的文字转换成语音朗读出来,软件调用百度在线语音系统,轻松朗读文字,并生成MP3音频文件,方便用户的使用。
  • 主要是百度语音合成,由于字符串长度最多2048字符,所以语音合成需要分段合成并按顺序播放。但是ios分段播放,浏览器退到后台,ended事件不会执行导致无法继续播放下一段,并且各种bug。因此可以把多个mp3二进制码...
  • 在本篇文章里小编给大家整理的是关于vue实现百度语音合成的实例内容,以及相关代码,需要的朋友们参考下。
  • 百度语音合成离在线融合封装类,简单的封装,使得调用更加简单明了。百度语音合成离在线融合封装类,简单的封装,使得调用更加简单明了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,642
精华内容 3,056
关键字:

百度语音合成