Поделиться через


Использование API быстрого транскрибирования с помощью службы "Речь ИИ Azure"

API быстрого транскрибирования используется для синхронного расшифровывания звуковых файлов быстрее, чем в реальном времени. Используйте быструю транскрипцию в случаях, когда вам нужна транскрипция аудиозаписи как можно быстрее с предсказуемой задержкой, таких как:

  • Быстрая транскрипция аудио или видео, субтитры и редактирование.
  • Перевод видеоматериала

В отличие от API пакетной транскрипции, API быстрой транскрипции производит транскрипции только в отображаемой (а не в лексической) форме. Форма отображения является более удобочитаемой версией транскрипции, которая включает знаки препинания и заглавные буквы.

Предпосылки

  • Ресурс Azure AI Speech в одном из регионов, где доступен API для быстрой транскрипции. Восточная Австралия, Южная Бразилия, Центральная Индия, Восточная часть США, Восточная часть США 2, Центральная Франция, Восточная Япония, Северная часть США, Северная Европа, Южная центральная часть США, Юго-Восточная Азия, Центральная Швеция, Южная Великобритания, Западная Европа, Западная часть США, Западная часть США 2, Западная часть США 3. Для получения дополнительной информации о регионах, поддерживаемых для других функций службы речи, см. регионы службы речи.

  • Звуковой файл (менее 2 часов и менее 300 МБ в размере) в одном из форматов и кодеков, поддерживаемых API пакетной транскрибирования: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW в контейнере WAV, MULAW в контейнере WAV, AMR, WebM и SPEEX. Для получения дополнительной информации о поддерживаемых аудиоформатах см. поддерживаемые аудиоформаты.

Используйте быструю API для транскрипции

Подсказка

Испробуйте быструю транскрипцию в портале Azure AI Foundry.

Мы учимся использовать API быстрого транскрипции (через Транскрипции - Расшифровать) в следующих сценариях:

  • Указана известная локаль: Транскрибировать аудиофайл с заданной локалью. Если вы знаете локаль звукового файла, можно указать её, чтобы повысить точность транскрибирования и минимизировать задержку.
  • Распознавание языка включено: Транскрибируйте аудиофайл с включенным распознаванием языка. Если вы не уверены в региональных настройках аудиофайла, вы можете включить идентификацию языка, чтобы служба распознавания речи могла определить региональные настройки (одни настройки на каждый аудиофайл).
  • Многоязычное транскрибирование (предварительная версия): транскрибирование аудиофайла с помощью последней многоязычной модели транскрибирования речи. Если звук содержит многоязычное содержимое, которое вы хотите непрерывно и точно расшифровывать, можно использовать последнюю модель транскрибирования речи с несколькими языками, не указывая коды языкового стандарта.
  • Диаризация включена: Транскрибируйте аудиофайл с включенной диаризацией. Диаризация различает разных участников разговора. Служба распознавания речи предоставляет информацию о том, какой из ораторов говорил конкретную часть транскрибированной речи.
  • Многоканальный режим включен: Транскрибировать аудиофайл, который содержит один или два канала. Транскрипции для мультимедийных каналов полезны для аудиофайлов с несколькими каналами, например, для аудиофайлов с несколькими говорящими или аудиофайлов с фоновым шумом. По умолчанию API для быстрой транскрипции объединяет все входные каналы в один и затем выполняет транскрипцию. Если это нежелательно, каналы могут быть транскрибированы независимо, без объединения.

Отправьте multipart/form-data POST-запрос к конечной точке transcriptions с аудиофайлом и свойствами тела запроса.

Следующий пример показывает, как транскрибировать аудиофайл с указанием региона. Если вы знаете локаль звукового файла, можно указать её, чтобы повысить точность транскрибирования и минимизировать задержку.

  • Замените YourSpeechResoureKey на ключ вашего ресурсного блока речи.
  • Замените YourServiceRegion регионом ресурса 'Речь'.
  • Замените YourAudioFile на путь к вашему аудиофайлу.

Это важно

Для рекомендуемой бесключевой аутентификации с использованием Microsoft Entra ID замените --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' на --header "Authorization: Bearer YourAccessToken". Дополнительные сведения о проверке подлинности без ключа см. в руководстве по управлению доступом на основе ролей .

curl --location 'https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-11-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    "locales":["en-US"]}"'

Составьте определение формы в соответствии с следующими инструкциями:

  • Установите необязательное (но рекомендуемое) свойство locales, которое должно соответствовать ожидаемому языковому региону аудиоданных для транскрибирования. В этом примере для языкового стандарта задано значение en-US. Для получения дополнительной информации о поддерживаемых языках см. поддерживаемые языки преобразования речи в текст.

Для получения дополнительной информации о locales и других свойствах API быстрой транскрипции, см. раздел параметры конфигурации запроса позднее в этом руководстве.

Ответ включает durationMilliseconds, offsetMilliseconds, и многое другое. Свойство combinedPhrases содержит полные транскрипции для всех участников.

{
	"durationMilliseconds": 182439,
	"combinedPhrases": [
		{
			"text": "Good afternoon. This is Sam. Thank you for calling Contoso. How can I help? Hi there. My name is Mary. I'm currently living in Los Angeles, but I'm planning to move to Las Vegas. I would like to apply for a loan. Okay. I see you're currently living in California. Let me make sure I understand you correctly. Uh You'd like to apply for a loan even though you'll be moving soon. Is that right? Yes, exactly. So I'm planning to relocate soon, but I would like to apply for the loan first so that I can purchase a new home once I move there. And are you planning to sell your current home? Yes, I will be listing it on the market soon and hopefully it'll sell quickly. That's why I'm applying for a loan now, so that I can purchase a new house in Nevada and close on it quickly as well once my current home sells. I see. Would you mind holding for a moment while I take your information down? Yeah, no problem. Thank you for your help. Mm-hmm. Just one moment. All right. Thank you for your patience, ma'am. May I have your first and last name, please? Yes, my name is Mary Smith. Thank you, Ms. Smith. May I have your current address, please? Yes. So my address is 123 Main Street in Los Angeles, California, and the zip code is 90923. Sorry, that was a 90 what? 90923. 90923 on Main Street. Got it. Thank you. May I have your phone number as well, please? Uh Yes, my phone number is 504-529-2351 and then yeah. 2351. Got it. And do you have an e-mail address we I can associate with this application? uh Yes, so my e-mail address is mary.a.sm78@gmail.com. Mary.a, was that a S-N as in November or M as in Mike? M as in Mike. Mike78, got it. Thank you. Ms. Smith, do you currently have any other loans? Uh Yes, so I currently have two other loans through Contoso. So my first one is my car loan and then my other is my student loan. They total about 1400 per month combined and my interest rate is 8%. I see. And you're currently paying those loans off monthly, is that right? Yes, of course I do. OK, thank you. Here's what I suggest we do. Let me place you on a brief hold again so that I can talk with one of our loan officers and get this started for you immediately. In the meantime, it would be great if you could take a few minutes and complete the remainder of the secure application online at www.contosoloans.com. Yeah, that sounds good. I can go ahead and get started. Thank you for your help. Thank you."
		}
	],
	"phrases": [
		{
			"offsetMilliseconds": 960,
			"durationMilliseconds": 640,
			"text": "Good afternoon.",
			"words": [
				{
					"text": "Good",
					"offsetMilliseconds": 960,
					"durationMilliseconds": 240
				},
				{
					"text": "afternoon.",
					"offsetMilliseconds": 1200,
					"durationMilliseconds": 400
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 1600,
			"durationMilliseconds": 640,
			"text": "This is Sam.",
			"words": [
				{
					"text": "This",
					"offsetMilliseconds": 1600,
					"durationMilliseconds": 240
				},
				{
					"text": "is",
					"offsetMilliseconds": 1840,
					"durationMilliseconds": 120
				},
				{
					"text": "Sam.",
					"offsetMilliseconds": 1960,
					"durationMilliseconds": 280
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 2240,
			"durationMilliseconds": 1040,
			"text": "Thank you for calling Contoso.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 2240,
					"durationMilliseconds": 200
				},
				{
					"text": "you",
					"offsetMilliseconds": 2440,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 2520,
					"durationMilliseconds": 120
				},
				{
					"text": "calling",
					"offsetMilliseconds": 2640,
					"durationMilliseconds": 200
				},
				{
					"text": "Contoso.",
					"offsetMilliseconds": 2840,
					"durationMilliseconds": 440
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 3280,
			"durationMilliseconds": 640,
			"text": "How can I help?",
			"words": [
				{
					"text": "How",
					"offsetMilliseconds": 3280,
					"durationMilliseconds": 120
				},
				{
					"text": "can",
					"offsetMilliseconds": 3440,
					"durationMilliseconds": 120
				},
				{
					"text": "I",
					"offsetMilliseconds": 3560,
					"durationMilliseconds": 40
				},
				{
					"text": "help?",
					"offsetMilliseconds": 3600,
					"durationMilliseconds": 320
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 5040,
			"durationMilliseconds": 400,
			"text": "Hi there.",
			"words": [
				{
					"text": "Hi",
					"offsetMilliseconds": 5040,
					"durationMilliseconds": 240
				},
				{
					"text": "there.",
					"offsetMilliseconds": 5280,
					"durationMilliseconds": 160
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 5440,
			"durationMilliseconds": 800,
			"text": "My name is Mary.",
			"words": [
				{
					"text": "My",
					"offsetMilliseconds": 5440,
					"durationMilliseconds": 80
				},
				{
					"text": "name",
					"offsetMilliseconds": 5520,
					"durationMilliseconds": 120
				},
				{
					"text": "is",
					"offsetMilliseconds": 5640,
					"durationMilliseconds": 80
				},
				{
					"text": "Mary.",
					"offsetMilliseconds": 5720,
					"durationMilliseconds": 520
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		// More transcription results...
	    // Redacted for brevity
		{
			"offsetMilliseconds": 180320,
			"durationMilliseconds": 680,
			"text": "Thank you for your help.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 180320,
					"durationMilliseconds": 160
				},
				{
					"text": "you",
					"offsetMilliseconds": 180480,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 180560,
					"durationMilliseconds": 120
				},
				{
					"text": "your",
					"offsetMilliseconds": 180680,
					"durationMilliseconds": 120
				},
				{
					"text": "help.",
					"offsetMilliseconds": 180800,
					"durationMilliseconds": 200
				}
			],
			"locale": "en-US",
			"confidence": 0.92022026
		},
		{
			"offsetMilliseconds": 181960,
			"durationMilliseconds": 280,
			"text": "Thank you.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 181960,
					"durationMilliseconds": 200
				},
				{
					"text": "you.",
					"offsetMilliseconds": 182160,
					"durationMilliseconds": 80
				}
			],
			"locale": "en-US",
			"confidence": 0.92022026
		}
	]
}

Примечание

Служба речи - это эластичная служба. Если вы получаете код ошибки 429 (слишком много запросов), пожалуйста, следуйте лучшим практикам для уменьшения нагрузки при автомасштабировании.

Запросить параметры конфигурации

Вот некоторые параметры свойств для настройки транскрипции, когда вы вызываете операцию Transcriptions - Transcribe.

Собственность Описание Обязательно или необязательно
channels Список отсчитываемых от нуля индексов каналов, которые необходимо транскрибировать отдельно. Поддерживаются до двух каналов, если не включена диаризация. По умолчанию API для быстрой транскрипции объединяет все входные каналы в один и затем выполняет транскрипцию. Если это нежелательно, каналы могут быть транскрибированы независимо, без объединения.

Если вы хотите отдельно транскрибировать каналы из стереофайла, вам нужно указать [0,1], [0] или [1]. В противном случае стерео аудио преобразуется в моно, и транскрибируется только один канал.

Если аудио стерео и включена диаризация, вы не можете установить свойство channels на [0,1]. Служба Speech не поддерживает диаризацию нескольких каналов.

Для моно аудио channels свойство игнорируется, а звук всегда транскрибируется как один канал.
Необязательно
diarization Конфигурация диаризации. Диаризация — это процесс распознавания и разделения нескольких говорящих в одном аудиоканале. Например, укажите "diarization": {"maxSpeakers": 2, "enabled": true}. Затем в файле транскрипции содержатся записи speaker, такие как "speaker": 0 или "speaker": 1, для каждой транскрибированной фразы. Необязательно
locales Список локалей, которые должны соответствовать ожидаемой локали аудиоданных для расшифровки.

Если вы знаете локаль звукового файла, можно указать её, чтобы повысить точность транскрибирования и минимизировать задержку. Если указан один языковой стандарт, этот языковой стандарт используется для транскрибирования.

Но если вы не уверены в локали, вы можете указать несколько локалей для использования идентификации языка. Идентификация языка может быть более точной с более точным списком возможных локалей.

Если языковой стандарт не указан, служба распознавания речи будет использовать последнюю многоязычную модель для определения языкового стандарта и непрерывной транскрипции.

Самые актуальные поддерживаемые языки можно получить с помощью REST API Transcriptions - List Supported Locales (версии API 2024-11-15 или более поздней). Для получения дополнительной информации о языковых настройках см. документацию по Поддержке языков в службе распознавания речи.
Необязательно, но рекомендуется, если вы знаете ожидаемую локаль.
profanityFilterMode Указывает способ обработки ненормативной лексики в результатах распознавания. Допустимые значения — None отключить фильтрацию ненормативной лексики, Masked заменить ненормативную лексику звездочками, Removed удалить все ненормативные выражения из результата или Tags добавить теги ненормативной лексики. Значение по умолчанию — Masked. Необязательно