Azure Cognitive Services - API пакетной транскрипции отвечает сообщением об ошибке "URI записи недействителен".

Шаги последовали:

  1. Я создал речевой сервис в Западной Америке.
  2. У меня есть правильные заголовки(Content-Type and Ocp-Apim-Subscription-Key)
  3. Я делаю POST-запрос к https://westus.cris.ai/api/speechtotext/v2.0/transcriptions/ с полезной нагрузкой запроса ниже
{
  "recordingsUrl": "https://transcribehm97c1.blob.core.windows.net/audio-files/2019-04-04_Blockchain%20explained%20with%20TruStory%27s%20Preethi%20Kasireddy.mp3?st=2019-05-27T12%3A19%3A27Z&se=2019-12-31T12%3A19%3A00Z&sp=rl&sv=2018-03-28&sr=b&sig=HFBvGl1pmCM95MNU9U3yniMNXrUMT6RmPb36F32cxrY%3D",
  "models": [],
  "locale": "en-US",
  "name": "I dont know why this is not working",
  "description": "Someone please send help",
  "properties": {
    "ProfanityFilterMode": "Masked",
    "PunctuationMode": "DictatedAndAutomatic"
  }
}
  1. Я получаю ответ "202 Принято" с заголовками ниже. Это подтверждает, что тело запроса является действительным.
location: https://westus.cris.ai/api/speechtotext/v2.0/transcriptions/69b7abf4-6383-4490-88a9-9fd42a77e470
  1. Когда я делаю запрос GET в указанное место, я вижу это
{
  "recordingsUrl": "https://transcribehm97c1.blob.core.windows.net/audio-files/2019-04-04_Blockchain explained with TruStory's Preethi Kasireddy.mp3?st=2019-05-27T12:19:27Z&se=2019-12-31T12:19:00Z&sp=rl&sv=2018-03-28&sr=b&sig=HFBvGl1pmCM95MNU9U3yniMNXrUMT6RmPb36F32cxrY%3D",
  "resultsUrls": {},
  "models": [“I have removed this for brevity”],
  "statusMessage": "The recordings URI is invalid.",
  "id": "69b7abf4-6383-4490-88a9-9fd42a77e470",
  "createdDateTime": "2019-05-27T12:43:39Z",
  "lastActionDateTime": "2019-05-27T12:43:50Z",
  "status": "Failed",
  "locale": "en-US",
  "name": "I dont know why this is not working",
  "description": "Someone please send help",
  "properties": {
    "ProfanityFilterMode": "Masked",
    "PunctuationMode": "DictatedAndAutomatic"
  }
}
  1. Транскрипция не выполняется для одних URL-адресов, в то время как для других - двоичные объекты в том же хранилище, хотя они все являются действительными URL-адресами. URI SAS в запросе действителен до конца года.
  2. Я повторил один и тот же запрос несколько раз с помощью кода и почтальона, и он не прошел.

Ссылка на страницу Swagger: https://westus.cris.ai/swagger/ui/index

2 ответа

Имя аудиофайла контейнера Blob не должно содержать пробелов. Это может вызвать проблему.

Вот две вещи, которые помогли мне создать URL-адрес SAS для передачи в службу транскрипции Azure Speech Batch. Я с разочарованием получал сообщение «Ошибка аутентификации для записи URI». сообщение.

  • При переходе к файлу через интерфейс хранилища лишние пробелы будут скрыты. Например, мой файл называлсяWeekly standup.mp4(два пробела), но в интерфейсе хранилища это выглядело какWeekly standup.mp4(одно место). Лучше всего получить имя вашего большого двоичного объекта программно, чтобы затем передать его в следующую задачу, а не копировать его из интерфейса.
  • При создании URL-адреса SAS также укажите дату начала и дату истечения срока действия:
          from azure.storage.blob import generate_blob_sas, BlobSasPermissions
    from datetime import datetime, timezone, timedelta

    sas_token = generate_blob_sas(
        account_name=account_name,
        account_key=account_key,
        container_name = container_name,
        blob_name = blob_name,
        permission=BlobSasPermissions(read=True),
        start=datetime.now(timezone.utc) - timedelta(hours=8),
        expiry=datetime.now(timezone.utc) + timedelta(hours=8)
    )

Другие вопросы по тегам