我想串联存储在AWS中的两个文件,将它们另存为.wav,然后将它们传递给IBM的语音文本API。 这是正常打给IBM的电话。
Let us try another step
pydub是否可以直接导出到AWS,因为我无法在线将其存储在本地?
提前谢谢!
答案 0 :(得分:1)
当您说“导出到AWS”时,我想您的意思是Amazon S3。您要从那里调用IBM的语音文本API。要在python中与Amazon S3交互,您应该使用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"
)