Я пытаюсь создать простой конвейер, используя AWS Transcribe, службу преобразования речи в текст, предоставляемую Amazon. На входе он принимает mp3 или wav (среди других форматов). Пытаясь создать своего рода API, который мог бы принимать MP3 из внешнего интерфейса, я постоянно получаю format not supported
ошибки, такие как Unsupported audio format: matroska,webm
.
Результирующий mp3-файл будет работать на Windows Media Player с правильным аудио, но с неработающим временным индексом (показало 400 часов для 10-секундного клипа) и вообще не будет работать на VL C. Я считаю, что мне может не хватать чего-то фундаментального в кодировке base 64.
Я считаю, что предыдущие заголовки, которые обычно передаются, такие как data:audio/mp3;base64
, предназначены для синтаксического анализа веб-интерфейса и не сохраняются в конечном файле. У меня ниже самый простой вариант моего кода. Еще одно небольшое дополнение: мне нужно хранить 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)