如何将audio.mp3转换为audio.flac?
Google 云语音转文本仅接受 flac 或原始格式的音频文件。 我想将audio.mp3/wav 文件转换为audio.flac,但我使用的转换器功能无法正常工作。任何人都可以建议我一种将audio.mp3/wav 文件转换为audio.flac 的更好方法。
export const SpeechToText = function (audioFileData, contentType) {
try {
let reader = new FileReader();
contentType = contentType.toLowerCase();
return new Promise((resolve) => {
reader.onload = function (event: any) {
let data = event.target.result.split(",");
let b64Data = data[1];
let blob = getBlobFromBase64Data(b64Data, contentType);
let blobUrl = URL.createObjectURL(blob);
let fileName = audioFileData.name.substring(
0,
audioFileData.name.lastIndexOf(".")
);
let convertedAudio = {
path: blobUrl,
type: targetFormat,
name: `${fileName}.flac`,
};
resolve(convertedAudio);
};
reader.readAsDataURL(audioFileData);
});
} catch (e) {
console.log("Error occurred while converting : ", e);
}
};
function getBlobFromBase64Data(b64Data, contentType, sliceSize = 512) {
const byteCharacters = atob(b64Data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, { type: contentType });
return blob;
}
Google cloud speech to text only accepts flac or raw formatted audio files.
I want to convert an audio.mp3/wav file to audio.flac but the converter functions I am using is not working properly. Can anyone suggest me a better way to convert audio.mp3/wav file to audio.flac.
export const SpeechToText = function (audioFileData, contentType) {
try {
let reader = new FileReader();
contentType = contentType.toLowerCase();
return new Promise((resolve) => {
reader.onload = function (event: any) {
let data = event.target.result.split(",");
let b64Data = data[1];
let blob = getBlobFromBase64Data(b64Data, contentType);
let blobUrl = URL.createObjectURL(blob);
let fileName = audioFileData.name.substring(
0,
audioFileData.name.lastIndexOf(".")
);
let convertedAudio = {
path: blobUrl,
type: targetFormat,
name: `${fileName}.flac`,
};
resolve(convertedAudio);
};
reader.readAsDataURL(audioFileData);
});
} catch (e) {
console.log("Error occurred while converting : ", e);
}
};
function getBlobFromBase64Data(b64Data, contentType, sliceSize = 512) {
const byteCharacters = atob(b64Data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, { type: contentType });
return blob;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论