Я пытаюсь настроить функцию VOICE MAIL для центра обработки вызовов в Amazon connect. Я добавил поток потокового мультимедиа в поток. Я также добавил функцию Lambda, которая запускается потоком Kinesis. Моя идея НЕ делать потоковую передачу в реальном времени, но загружать файл после завершения потоковой передачи.
import json
import base64
import boto3
import time
def lambda_handler(event,context):
# print(event)
record = base64.b64decode(event["Records"][0]["kinesis"]["data"]).decode('utf-8')
record_obj = json.loads(record)
print('record', record)
bucket = 'yyyy'
key = 'streams/sample123.raw'
# try:
s3_client = boto3.client('s3',region_name='us-east-1')
kinesis_client_1 = boto3.client('kinesisvideo',region_name='us-east-1')
get_ep = kinesis_client_1.get_data_endpoint(StreamARN='arn:aws:kinesisvideo:us-east-1:237980099910:stream/xxxx/1580972532224',APIName='GET_MEDIA_FOR_FRAGMENT_LIST')
t = get_ep['DataEndpoint']
print(t)
kinesis_client_2= boto3.client('kinesis-video-archived-media',region_name='us-east-1',endpoint_url=t)
response = kinesis_client_2.list_fragments(StreamName='xxxx',
# MaxResults=123,
# NextToken='string',
FragmentSelector={
'FragmentSelectorType': 'SERVER_TIMESTAMP',
'TimestampRange': {
'StartTimestamp': '2020-02-07T05:21:30Z',
'EndTimestamp': '2020-02-07T05:22:08Z'
}
}
)
fragments_list = res = [ sub['FragmentNumber'] for sub in response['Fragments'] ]
print(fragments_list)
stream = kinesis_client_2.get_media_for_fragment_list(
StreamName='xxxx',
Fragments=[
'above list'
]
)
print(stream)
stream_payload =stream['Payload'].read()
s3_client.put_object(Bucket=bucket, Key=key, Body= stream_payload)
В лямбда-функции я пытаюсь получить аудиофайл и загрузить его как .raw в корзину s3. Когда я загружаю его и импортирую в средство Audacity (PCM с 16-битной подписью, 8000 Гц, 1 канал), звук очень шумный. Может кто-нибудь сказать мне, как решить эту проблему? Я хочу услышать чистый звук и преобразовать его в файл .wav. Кодирование либо в python, либо в node.js.
Лямбда-триггер из кинесиса:
{
"AWSAccountId": "xxxx",
"AWSContactTraceRecordFormatVersion": "2017-03-10",
"Agent": null,
"AgentConnectionAttempts": 0,
"Attributes": {},
"Channel": "VOICE",
"ConnectedToSystemTimestamp": "2020-02-07T05:21:16Z",
"ContactId": "7f8a125c-88d6-44e7-acde-xxxx",
"CustomerEndpoint": {
"Address": "+",
"Type": "TELEPHONE_NUMBER"
},
"DisconnectTimestamp": "2020-02-07T05:22:08Z",
"InitialContactId": null,
"InitiationMethod": "INBOUND",
"InitiationTimestamp": "2020-02-07T05:21:16Z",
"InstanceARN": "arn",
"LastUpdateTimestamp": "2020-02-07T05:23:15Z",
"MediaStreams": [{
"Type": "AUDIO"
}],
"NextContactId": null,
"PreviousContactId": null,
"Queue": {
"ARN": "arn",
"DequeueTimestamp": "2020-02-07T05:22:08Z",
"Duration": 44,
"EnqueueTimestamp": "2020-02-07T05:21:24Z",
"Name": "General Queue"
},
"Recording": null,
"Recordings": [{
"DeletionReason": null,
"FragmentStartNumber": "91343852333181432392682062626319863574829261800",
"FragmentStopNumber": "91343852333181432759112314254792434826550738671",
"Location": "arn:aws:kinesisvideo:us-east-1:237980099910:stream/xxxx/1580972532224",
"MediaStreamType": "AUDIO",
"ParticipantType": "CUSTOMER",
"StartTimestamp": "2020-02-07T05:21:30Z",
"Status": null,
"StopTimestamp": "2020-02-07T05:22:08Z",
"StorageType": "KINESIS_VIDEO_STREAM"
}],
"SystemEndpoint": {
"Address": "+",
"Type": "TELEPHONE_NUMBER"
},
"TransferCompletedTimestamp": null,
"TransferredToEndpoint": null
}