swan.ai.textToAudio

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

# 方法参数

Object object

# data 参数说明

属性名 类型 必填 默认值 说明
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 合成的音频文件的路径,此路径为临时路径且在当次回调中有效

# 示例

扫码体验
重新加载
请使用百度APP扫码

# 图片示例

# 代码示例 1

  • 在 js 文件中
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 - 普通女声

  • 在 js 文件中
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 - 普通男声

  • 在 js 文件中
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 - 情感合成-度逍遥

  • 在 js 文件中
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 - 情感合成-度丫丫

  • 在 js 文件中
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 会导致此功能无法使用。