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


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

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

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

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

Необходимые компоненты

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

  • Звуковой файл (менее 2 часов и менее 200 МБ в размере) в одном из форматов и кодеков, поддерживаемых API пакетной транскрибирования. Дополнительные сведения о поддерживаемых аудиоформатах см . в поддерживаемых аудиоформатах.

Использование API быстрого транскрибирования

Совет

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

Мы узнаем, как использовать API быстрого транскрибирования (с помощью транскрибирования — transcribe) со следующими сценариями:

  • Известный языковой стандарт, указанный: транскрибирование звукового файла с указанным языковым стандартом. Если вы знаете языковой стандарт звукового файла, можно указать его, чтобы повысить точность транскрибирования и свести к минимуму задержку.
  • Идентификация языка: транскрибирование звукового файла с помощью идентификации языка. Если вы не уверены в языковом стандарте звукового файла, можно включить идентификацию языка, чтобы служба "Речь" идентифицировать языковой стандарт.
  • Diarization on: Transcribe a audio file with diarization on. Диаризация различает разных докладчиков в беседе. Служба "Речь" предоставляет сведения о том, какой докладчик говорил определенную часть транскрибированного речи.
  • Включение нескольких каналов: транскрибирование звукового файла с одним или двумя каналами. Транскрибирование с несколькими каналами полезно для аудиофайлов с несколькими каналами, например аудиофайлов с несколькими динамиками или звуковыми файлами с фоновым шумом. По умолчанию API быстрого транскрибирования объединяет все входные каналы в один канал, а затем выполняет транскрибирование. Если это не желательно, каналы могут быть транскрибированы независимо без объединения.

Создайте запрос transcriptions POST для нескольких частей и форм-данных к конечной точке с помощью звукового файла и свойств текста запроса.

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

  • Замените YourSubscriptionKey ключом ресурса службы речи.
  • Замените YourServiceRegion регион ресурсов службы "Речь".
  • Замените YourAudioFile путь к звуковому файлу.
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: YourSubscriptionKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    "locales":["en-US"]}"'

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

  • Задайте необязательное (но рекомендуемое) locales свойство, которое должно соответствовать ожидаемому языковому стандарту звуковых данных для транскрибирования. В этом примере для языкового стандарта задано значение en-US. Поддерживаемые языковые стандарта, которые можно указать: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR и zh-CN.

Дополнительные сведения о 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.93616915
		},
		{
			"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.93616915
		},
		{
			"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.93616915
		},
		{
			"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.93616915
		},
		{
			"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.93616915
		},
		{
			"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.93616915
		},
		// 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.9314801
		},
		{
			"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.9314801
		}
	]
}

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

Ниже приведены некоторые параметры свойств для настройки транскрибирования при вызове операции транскрибирования — транскрибирования .

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

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

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

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

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

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

Если вы не указываете языковой стандарт или если указанные языковые стандарты не указаны в звуковом файле, служба "Речь" по-прежнему пытается определить язык. Если язык не удается определить, возвращается ошибка.

Поддерживаемые языковые стандарта, которые можно указать: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR и zh-CN. Вы можете получить последние поддерживаемые языки с помощью транскрибирования — список поддерживаемых языков REST API. Дополнительные сведения о языковых стандартах см. в документации по поддержке языка службы "Речь".
Необязательно, но рекомендуется, если вы знаете ожидаемый языковой стандарт.
profanityFilterMode Указывает, как обрабатывать ненормативную лексику в результатах распознавания. Допустимые значения: None — отключает фильтрацию ненормативной лексики, Masked — заменяет ненормативную лексику звездочками, Removed — удаляет всю ненормативную лексику из результата, Tags — добавляет теги, указывающие на ненормативную лексику. Значение по умолчанию — Masked. Необязательно