我正在尝试使用亚马逊提供的语音到文本服务 AWS Transcribe 创建一个简单的管道。它将 mp3 或 wav(以及其他格式)作为输入。在尝试构建一种可以从前端获取 MP3 的 API 时,我不断收到format not supported
诸如Unsupported audio format: matroska,webm
.
生成的 mp3 文件可以在具有正确音频但时间索引损坏的 Windows Media Player 上运行(对于 10 秒的剪辑显示 400 小时),并且根本无法在 VLC 上运行。我相信我可能遗漏了一些关于 base 64 编码的基本知识。
我相信通常传递的前面的标头(例如data:audio/mp3;base64
用于 Web UI 解析)并没有真正存储到结果文件中。我在下面有我的代码的最简单的变体。另一个小补充是我需要将 mp3 文件存储在 S3 存储桶上,以便管道工作
客户
with open(mp3_file_name, "rb") as h:
m = base64.b64encode(h.read()).decode('utf-8')
request_body = {
"mp3_base64": m
}
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data = json.dumps(request_body))
服务器
mp3_base64 = params.get('mp3_base64')
with open(tmp, "wb") as f:
f.write(base64.b64decode(mp3_base64))
s3_client = boto3.client('s3')
try:
response = s3_client.upload_file(tmp, bucket, object_name)