0

我正在尝试使用亚马逊提供的语音到文本服务 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)
4

1 回答 1

0

它最终是来自另一个正在生成音频文件的库的编码错误,这个问题根本与转录无关

于 2020-09-07T06:37:57.987 回答