uni-app 小程序端无法使用 百度语音合成接口 - 取舍

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app 小程序端无法使用 百度语音合成接口 - 取舍

小程序端无法使用

3 回复

公司承接项目外包开发、双端(Android,iOS)原生插件开发。
为什么选择我们: 1、1000 项目开发积累,数百种商业模式开发经验,更懂您的需求,沟通无障碍。 2、一年免费技术保障,系统故障或被攻击,2小时快速响应提供解决方案落地。 3、软件开发源码定制工厂,去中间商降低成本,提高软件开发需求沟通效率。 4、纯原生开发,拒绝模板和封装系统,随时更新迭代,增加功能,无需重做系统。 5、APP定制包办软件著作权申请,30天内保证拿到软著证书,知识产权受保护。 6、中软云科技导入严谨的项目管理系统,确保项目准时交付,快速抢占市场商机。 7、软件开发费、维护费、第三方各种费用公开透明,不花冤枉钱,不玩套路。
已有大量双端插件、App、小程序、公众号、PC、移动端、游戏等案例。
行业开发经验:银行、医疗、直播、电商、教育、旅游、餐饮、分销、微商、物联网、零售等
商务QQ:1559653449 商务微信:fan-rising
7x24小时在线,欢迎咨询了解


有需求加微 xyange_ 专职uniapp五年

针对你在uni-app小程序端无法使用百度语音合成接口的问题,这通常是由于小程序平台的安全策略以及第三方库兼容性问题所导致的。虽然直接在小程序中使用百度语音合成接口可能受限,但你可以通过一些变通的方法来实现类似的功能。

解决方案思路

  1. 使用服务器端转发:由于小程序对外部网络请求的限制,你可以将请求转发到你的服务器,由服务器调用百度语音合成接口,然后将生成的音频文件返回给小程序。

  2. 使用小程序提供的语音合成接口:如果功能需求不是非常特定于百度语音合成,可以考虑使用微信小程序提供的官方语音合成接口(wx.createInnerAudioContextwx.synthesizeSpeech),这通常更为简便和直接。

示例代码

方案一:使用服务器端转发

服务器端(Node.js 示例)

const axios = require('axios');
const fs = require('fs');
const express = require('express');
const app = express();

app.post('/baidu-tts', async (req, res) => {
    const { text } = req.body;
    const response = await axios.post('https://aip.baidubce.com/rpc/2.0/ai_custom/v1/tts', {
        text,
        lan: 'zh',
        per: '4',
        spd: '5',
        pit: '5',
        vol: '5',
        aue: '3'
    }, {
        headers: {
            'Content-Type': 'application/json',
            'X-Api-Key': 'YOUR_BAIDU_API_KEY'
        }
    });

    const audioData = Buffer.from(response.data.data.audio, 'base64');
    fs.writeFileSync('output.mp3', audioData);

    res.download('output.mp3', (err) => {
        if (err) {
            console.error('Failed to send audio file:', err);
        } else {
            console.log('Audio file sent successfully');
        }
    });
});

app.listen(3000, () => console.log('Server running on port 3000'));

小程序端

wx.request({
    url: 'http://yourserver.com/baidu-tts',
    method: 'POST',
    data: { text: '需要合成的文本' },
    success: (res) => {
        const filePath = res.tempFilePath; // 假设服务器返回的是文件路径或你可以处理为临时文件路径
        wx.previewImage({
            urls: [filePath] // 这里仅为示例,实际应使用音频播放接口
        });
    }
});

注意:上述代码为示例性质,实际使用时需要处理错误、安全性(如验证请求来源)、文件清理等问题,并根据具体需求调整。

方案二:使用小程序提供的语音合成接口

直接使用wx.synthesizeSpeechwx.createInnerAudioContext,具体用法可参考微信官方文档。

通过上述方法,你可以在uni-app小程序端实现语音合成的功能,尽管可能不是直接使用百度语音合成接口。

回到顶部