You need to enable JavaScript to run this app. Node.js中将微软语音SDK返回的ArrayBuffer写入MP3或上传至S3的方法
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中将微软语音SDK返回的ArrayBuffer写入MP3或上传至S3的方法

写入本地MP3文件
  • 核心是将SDK返回的ArrayBuffer转为Node.js原生Buffer类型,直接调用Buffer.from()方法转换即可
  • 再通过fs模块写入本地路径,示例代码如下:
const fs = require('fs/promises');

async function saveAsMp3(speechArrayBuffer, outputPath) {
  // ArrayBuffer转Node Buffer
  const audioBuffer = Buffer.from(speechArrayBuffer);
  await fs.writeFile(outputPath, audioBuffer);
}

// 调用示例
// saveAsMp3(你的SDK返回的ArrayBuffer, './output.mp3')
直接上传到S3存储

无需先写入本地文件,转换后的Buffer可直接作为S3上传的请求体,以AWS官方的aws-sdk v3版本为例:

  • 第一步安装依赖:npm install @aws-sdk/client-s3
  • 上传示例代码如下:
const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3");

// 初始化S3客户端,替换为你自己的配置
const s3Client = new S3Client({
  region: "你的S3服务区域",
  credentials: {
    accessKeyId: "你的AccessKeyId",
    secretAccessKey: "你的SecretAccessKey"
  }
});

async function uploadAudioToS3(speechArrayBuffer, bucketName, s3FilePath) {
  const audioBuffer = Buffer.from(speechArrayBuffer);
  const params = {
    Bucket: bucketName,
    Key: s3FilePath, // 示例:'audio/2024/test.mp3'
    Body: audioBuffer,
    ContentType: 'audio/mpeg' // 明确指定MP3格式,避免后续播放异常
  };
  await s3Client.send(new PutObjectCommand(params));
}

// 调用示例
// uploadAudioToS3(你的SDK返回的ArrayBuffer, '你的bucket名称', 'audio/test.mp3')

注意:请提前确认微软语音SDK的输出格式配置为MP3编码,可在SpeechConfig实例中设置speechSynthesisOutputFormat参数为对应MP3的枚举值(比如Audio16Khz128KBitRateMonoMp3),否则生成的文件后缀为mp3但编码不匹配会无法正常播放。

内容的提问来源于stack exchange,提问作者Vikas Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 22:45:07