返回

使用 JS 的 atob 和 btoa 方法处理 base64 数据后,转 Blob 类型实现文字转语音 .mp3 文件

前端

利用 JS atob 和 btoa 方法处理 base64 数据

JavaScript 的 atob 和 btoa 方法可以对 base64 数据进行编码和解码。base64 是一种二进制到文本的编码方案,它可以将二进制数据转换为 ASCII 字符串,从而便于传输和存储。

atob 方法可以将 base64 字符串解码为二进制数据,而 btoa 方法可以将二进制数据编码为 base64 字符串。这两个方法在处理 base64 数据时非常有用。

将 base64 数据转换为 Blob 类型

Blob 类型是 JavaScript 中的一个接口,它表示二进制数据。Blob 类型的数据可以保存为文件,也可以通过 URL 访问。

我们可以使用 Blob 构造函数将 base64 数据转换为 Blob 类型。Blob 构造函数的第一个参数是二进制数据,第二个参数是 Blob 类型对象的类型。

例如,以下代码将 base64 数据转换为 Blob 类型:

const base64Data = 'SGVsbG8sIFdvcmxkIQ==';
const blob = new Blob([atob(base64Data)], { type: 'audio/mp3' });

使用 Google Text-to-Speech API 实现文字转语音

Google Text-to-Speech API 是一个云服务,它可以将文字转换为自然而逼真的语音。该 API 提供多种语言和声音可供选择,并支持多种输出格式,包括 mp3、wav 和 ogg。

我们可以使用 JavaScript 调用 Google Text-to-Speech API,并将生成的语音保存为 mp3 文件。

例如,以下代码使用 Google Text-to-Speech API 将一段文字转换为 mp3 文件:

const text = 'Hello, World!';
const lang = 'en-US';
const voice = 'en-US-Standard-C';
const requestBody = {
  input: { text: text },
  voice: { languageCode: lang, name: voice },
  audioConfig: { audioEncoding: 'MP3' }
};

fetch('https://texttospeech.googleapis.com/v1beta1/textToSpeech:synthesize', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(requestBody)
})
.then(res => res.json())
.then(data => {
  const base64Data = data.audioContent;
  const blob = new Blob([atob(base64Data)], { type: 'audio/mp3' });
  const url = URL.createObjectURL(blob);
  const audio = new Audio(url);
  audio.play();
});

总结

本文介绍了如何使用 JavaScript 的 atob 和 btoa 方法处理 base64 数据,并将其转换为 Blob 类型,从而实现文字转语音为 .mp3 文件的功能。该方法利用 Google 的 Text-to-Speech API 将文字转换为自然而逼真的语音,并通过 Blob 类型将其保存为 .mp3 文件。