【问题标题】:How to decode AWS Kinesis Video Stream GetMedia API output to mp3/wav?如何将 AWS Kinesis Video Stream GetMedia API 输出解码为 mp3/wav?
【发布时间】:2019-03-18 19:09:55
【问题描述】:

我现在使用 GetMedia API 通过 AWS Connect 服务将数据摄取到(Kinesis Video Stream)KVS 能够提取 Payload 但如何将此输出转换为 mp3/wav ?我想将此输出摄取到 AWS Transcribe 服务,以获取由 AWS Connect 服务摄取到 KVS 的音频呼叫的文本格式。

以下代码的 Payload 输出如下:

00#AWS_KINESISVIDEO_CONTINUATION_TOKEND\x87....\x1faudio/L16;rate=8000;channels=1;\x12T\xc......00"AWS_KINESISVIDEO_MILLIS_BEHIND_NOWD\x87\x10\x00\x00\x074564302g\xc8 \x10\x00\x00^E\xa3\x10\x00\x00#AWS_KINESISVIDEO_CONTINUATION_TOKEND\x87\x10\x00\x00/91343852333181432506572546233025969374566791063'

注意:上面的回复太长了,贴一部分吧。

import json
import boto3

kinesis_client = boto3.client('kinesisvideo', region_name='us-east-1')

response = kinesis_client.get_data_endpoint(
    StreamARN='arn:aws:kinesisvideo:us-east-1:47...,
    APIName='GET_MEDIA')

t = response['DataEndpoint']
video_client = boto3.client('kinesis-video-media', endpoint_url=t, region_name='us-east-1')
stream = video_client.get_media(
    StreamARN='arn:aws:kinesisvideo:us-east-1:47...',
    StartSelector={'StartSelectorType': 'EARLIEST'})

streamingBody = stream['Payload']
print(streamingBody.read())

请建议我如何将有效负载输出转换为 mp3/wav 等。

【问题讨论】:

  • 你是如何解决这个问题的?我有非常相似的问题 - 我需要从 Payload 中提取第一帧视频。
  • @py_ml 我的团队关注并部署了这个:github.com/aws-samples/amazon-connect-realtime-transcription

标签: python-3.x amazon-web-services amazon-kinesis amazon-kinesis-agent apache-camel-aws-kinesis


【解决方案1】:

我面临同样的问题,我可以将有效负载作为原始文件导出到 S3,但是当我收听它时,它无法正常听到,就像是加密对话一样。

我只是将有效负载保存到一个文件中。

f = open("myAudio.wav", 'w+b')
f.write(stream['Payload'].read())
f.close() 

【讨论】:

  • 你能把音频转换成文本吗?使用下面的代码,看看音频是否正确转换为文本? import speech_recognition as sr r= sr.Recognizer() audio='myAudio.wav' with sr.AudioFile(audio) as source: print('Started!') audio =r.record(source) print('Done!')尝试:text=r.recognize_google(audio) print(text) 例外为 e: print(e)
  • 顺便说一下浪费了,我们与 AWS 技术团队进行了交谈,他们清楚地告诉我们现在只能使用 java 而不使用 python 来解析 kinesis mkv 格式的媒体。因此,请按照以下链接逐步部署 aws connect-transcribe -- 无需了解 java 只需按照步骤操作,因为它是 github.com/aws-samples/amazon-connect-realtime-transcription 我们的团队在没有 java 知识的情况下成功地做同样的事情,希望您能够做到。
  • 您好,谢谢您的回答。我什至还没有尝试转录音频。目前,我只想将它保存在 S3 存储桶中,然后像语音邮件一样收听。但不知何故,音频文件无法正常听到。您是否设法将有效负载转换为可收听的 wav 文件?
  • 是的,我的同事使用我上面提供的那个 github 链接中的代码完成了。你的音频制作人是什么?我的意思是你从哪里摄取音频到运动?
  • 来自 AWS 连接。但是您提供的链接仅说明了如何转录音频。我认为您关心的是以 wav 或 mp3 格式输出有效负载。你在python中成功解决了这个问题吗?我还不想转录它,我只想将 getMedia 函数中的有效负载保存到一个文件中,例如,我可以使用 Audacity 或 quicktime 播放器收听。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多