阅读(459) (7)

百度智能小程序 文本转换为mp3文件

2020-08-13 16:01:18 更新

swan.ai.textToAudio

解释:将文本转换为可以播放的 mp3 文件。

方法参数

Object object

object 参数说明

属性名类型必填默认值说明

tex

String

-

合成的文本,使用 UTF-8 编码,小于 512 个中文字或者英文数字(文本在百度服务器内转换为 GBK 后,长度必须小于 1024 字节)。

ctp

String

1

客户端类型选择, Web 端填写固定值 1 。

lan

String

zh

固定值 zh 。语言选择,目前只有中英文混合模式,填写固定值 zh 。

spd

String

5

语速,取值 0-9 ,默认为 5 中语速。

pit

String

5

音调,取值 0-9 ,默认为 5 中语调。

vol

String

5

音量,取值 0-9 ,默认为 5 中音量。

per

String

0

发音人选择, 0 为普通女声, 1 为普通男生, 3 为情感合成-度逍遥, 4 为情感合成-度丫丫,默认为普通女声。

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success 返回参数说明

参数类型说明

filePath

String

合成的音频文件的路径,此路径为临时路径且在当次回调中有效。

示例



图片示例


代码示例 1: 

在开发者工具中打开

Page({
    data: {
        sourceIndex: 5,
        sourceArray: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
        sizeIndex: 5,
        sizeArray: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
        countIndex: 5,
        countArray: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
        perIndex: 1,
        perArray: ['普通女声', '普通男声', '情感合成-度逍遥', '情感合成-度丫丫'],
        msg: 'hello,这是一段测试语音合成的文字'
    },
    sourceChange(e) {
        this.setData('sourceIndex', e.detail.value);
    },
    sizeChange(e) {
        this.setData('sizeIndex', e.detail.value);
    },
    countChange(e) {
        this.setData('countIndex', e.detail.value);
    },
    perChange(e) {
        this.setData('perIndex', e.detail.value);
    },
    textToAudio() {
        let tex = this.getData('msg');
        let sourceIndex = this.getData('sourceIndex');
        let sizeIndex = this.getData('sizeIndex');
        let countIndex = this.getData('countIndex');
        let perIndex = this.getData('perIndex');
        // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
        let host = swan.getSystemInfoSync().host;
        if (host === 'baiduboxapp') {
            swan.ai.textToAudio({
                tex,
                ctp: '1',
                lan: 'zn',
                spd: JSON.stringify(this.data.sourceArray[sourceIndex]),
                pit: JSON.stringify(this.data.sizeArray[sizeIndex]),
                vol: JSON.stringify(this.data.countArray[countIndex]),
                per: JSON.stringify(this.data.perArray[perIndex]),
                success: res => {
                    console.log('ai.textToAudio success', res);
                    swan.showToast({
                        title: '合成成功',
                        icon: 'none'
                    });
                },
                fail: err => {
                    console.log('ai.textToAudio fail', err);
                }
            });
        }
        else {
            swan.showToast({
                title: '此api目前仅可在百度App上使用',
                icon: 'none'
            });
        }
    }
});

代码示例 2:普通女声 

在开发者工具中打开

Page({
    data: {
    },
    textToAudio(){
        // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
        let host = swan.getSystemInfoSync().host;
        if (host === 'baiduboxapp') {
            swan.ai.textToAudio({
                tex: 'hello,这是一段测试语音合成的文字',
                ctp: '1',
                lan: 'zh',
                spd: '5',
                pit: '5',
                vol: '5',
                per: '0',
                success: res => {
                    console.log('ai.textToAudio success', res);
                    swan.showToast({
                        title: '合成成功',
                        icon: 'none'
                    });
                },
                fail: err => {
                    console.log('ai.textToAudio fail', err);
                }
            });
        }
        else {
            swan.showToast({
                title: '此api目前仅可在百度App上使用',
                icon: 'none'
            });
        }
    }
});

代码示例 3:普通男声 

在开发者工具中打开

Page({
    data: {
    },
    textToAudio(){
        // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
        let host = swan.getSystemInfoSync().host;
        if (host === 'baiduboxapp') {
            swan.ai.textToAudio({
                tex: 'hello,这是一段测试语音合成的文字',
                ctp: '1',
                lan: 'zh',
                spd: '5',
                pit: '5',
                vol: '5',
                per: '1',
                success: res => {
                    console.log('ai.textToAudio success', res);
                    swan.showToast({
                        title: '合成成功',
                        icon: 'none'
                    });
                },
                fail: err => {
                    console.log('ai.textToAudio fail', err);
                }
            });
        }
        else {
            swan.showToast({
                title: '此api目前仅可在百度App上使用',
                icon: 'none'
            });
        }
    }
});

代码示例 4:情感合成—度逍遥 

在开发者工具中打开

Page({
    data: {
    },
    textToAudio(){
        // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
        let host = swan.getSystemInfoSync().host;
        if (host === 'baiduboxapp') {
            swan.ai.textToAudio({
                tex: 'hello,这是一段测试语音合成的文字',
                ctp: '1',
                lan: 'zh',
                spd: '5',
                pit: '5',
                vol: '5',
                per: '3',
                success: res => {
                    console.log('ai.textToAudio success', res);
                    swan.showToast({
                        title: '合成成功',
                        icon: 'none'
                    });
                },
                fail: err => {
                    console.log('ai.textToAudio fail', err);
                }
            });
        }
        else {
            swan.showToast({
                title: '此api目前仅可在百度App上使用',
                icon: 'none'
            });
        }
    }
});

代码示例 5:情感合成—度丫丫 

在开发者工具中打开

Page({
    data: {
    },
    textToAudio(){
        // AI系列的api有宿主使用限制,只可在百度App中使用,建议使用时加一层判断防止代码报未知错误
        let host = swan.getSystemInfoSync().host;
        if (host === 'baiduboxapp') {
            swan.ai.textToAudio({
                tex: 'hello,这是一段测试语音合成的文字',
                ctp: '1',
                lan: 'zh',
                spd: '5',
                pit: '5',
                vol: '5',
                per: '4',
                success: res => {
                    console.log('ai.textToAudio success', res);
                    swan.showToast({
                        title: '合成成功',
                        icon: 'none'
                    });
                },
                fail: err => {
                    console.log('ai.textToAudio fail', err);
                }
            });
        }
        else {
            swan.showToast({
                title: '此api目前仅可在百度App上使用',
                icon: 'none'
            });
        }
    }
});


Bug & Tip

  • 重置 App Secret 会导致此功能无法使用。