Как передать Encoded Audio String в байты с помощью JSON? - PullRequest
1 голос
/ 28 июня 2019

Я пытался реализовать приведенный ниже код оболочки с помощью Python. Я собираюсь использовать глубокий эффект идентификации оратора API . Поэтому перед его использованием мне нужно зарегистрировать аудиофайл с идентификатором пользователя, в их документах нет приведенного примера python вместо приведенных ниже команд оболочки.

curl -X POST "https://proxy.api.deepaffects.com/audio/generic/api/v1    /sync/diarization/enroll?apikey=<ACCESS_TOKEN>" -H 'content-type: application/json' -d @data.json

# contents of data.json
{"content": "bytesEncodedAudioString", "sampleRate": 8000, "encoding":   "FLAC", "languageCode": "en-US", "speakerId": "user1" }

Пока что я написал следующий код.

 import requests

 url = 'https://proxy.api.deepaffects.com/audio/generic/api/v1   /sync/diarization/enroll?apikey=<3XY9aG7AbXZ4AuKyAip7SXfNNdc4mwq3>'

 data = {
     "content": "bytesEncodedAudioString", 
     "sampleRate": 8000, 
     "encoding": "FLAC",
     "languageCode": "en-US", 
     "speakerId": "Pranshu Ranjan",
  }

  headers = {'content-type': 'application/json'}
  r = requests.post(url, data=data, headers=headers) 
  print(r)

Но я не знаю, как передать "content": "bytesEncodedAudioString". У меня есть аудио образцы в формате mp3 в моем местном каталоге. вот ссылка deepAffects api , и они поддерживают несколько аудиоформатов

1 Ответ

1 голос
/ 28 июня 2019

В соответствии с документацией :

кодирование содержимого (String) base64 аудиофайла.

Просто используйте встроенный base64модуль для кодирования вашего аудиофайла:

import base64
import requests


filepath = "C:\Audio\...\file.mp3"
with open(filepath, 'rb') as f:
    audio_encoded = base64.b64encode(f.read())  # read file into RAM and encode it

data = {
    "content": str(audio_encoded),  # base64 string
    "sampleRate": 8000, 
    "encoding": "FLAC",  # maybe "MP3" should be there?
    "languageCode": "en-US", 
    "speakerId": "Pranshu Ranjan",
}

url = ...
r = requests.post(url, json=data)  # note json= here. Headers will be set automatically.
...