Когда вы говорите «экспорт в AWS», я предполагаю, что вы имеете в виду Amazon S3 .Оттуда вы хотите вызывать API преобразования речи в текст IBM.Для взаимодействия с Amazon S3 в python вы должны использовать boto3 SDK.
Вам не нужно экспортировать данные во временный локальный файл, если он вам не нужен.Вы можете хранить данные в памяти на python.
import os
import io
import boto3
from pydub import AudioSegment
from ibm_watson import SpeechToTextV1
speech_to_text = SpeechToTextV1()
s3r = boto3.resource("s3")
bucket = "randall-stackoverflow"
file1 = io.BytesIO()
s3r.Object(bucket, "file1.wav").download_fileobj(file1)
file2 = io.BytesIO()
s3r.Object(bucket, "file2.wav").download_fileobj(file2)
sound1 = AudioSegment.from_wav(file1)
sound2 = AudioSegment.from_wav(file2)
combined = sound1.append(sound2) # maybe add crossfade
recognition_job = speech_to_text.create_job(
combined.raw_data,
content_type='audio/wav',
timestamps=True
)
Я был бы упущен, если бы не упомянул Amazon Transcribe , который позволил бы вам делать все это в облаке AWS.
transcribe = boto3.client("transcribe")
url = "{}/{}/{}".format(
s3r.meta.client.meta.endpoint_url,
bucket,
"file1.wav"
)
transcribe.start_transcription_job(
TranscriptionJobName="ExampleJob",
Media={"MediaFileUri": url},
LanguageCode="en-US",
MediaFormat="wav"
)