Compartir a través de


Usar la API de Transcripción rápida (versión preliminar) con Voz de Azure AI

Nota:

Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin contrato de nivel de servicio y no es aconsejable usarla para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

La API de Transcripción rápida solo está disponible mediante la API REST de conversión de voz en texto versión 2024-05-15-preview. Esta versión preliminar está sujeta a cambios y no se recomienda para su uso en producción. Se retirará sin previo aviso 90 días después de una versión preliminar sucesora o de la disponibilidad general (GA) de la API.

La API de Transcripción rápida se usa para transcribir archivos de audio con resultados de forma sincrónica y mucho más rápidos que en el audio en tiempo real. Use la transcripción rápida en los escenarios en los que necesite la transcripción de una grabación de audio lo más rápido posible con una latencia predecible, como los siguientes:

  • Transcripción rápida de audio o vídeo, subtítulos y edición.
  • Traducción de vídeo

Sugerencia

Probar la transcripción rápida en Inteligencia artificial de Azure Studio.

Requisitos previos

  • Un recurso de Voz de Azure AI en una de las regiones en las que está disponible la API de Transcripción rápida. Las regiones compatibles son: Este de Australia, Sur de Brasil, India Central, Este de EE.UU., Este de EE.UU. 2, Francia Central, Japón Oriental, Norte de EE.UU. Central, Norte de Europa, Sur de EE.UU. Central, Sudeste Asiático, Centro de Suecia, Oeste de Europa, Oeste de EE.UU., Oeste de EE.UU. 2, Oeste de EE.UU. 3. Para obtener más información sobre las regiones admitidas para otras características del servicio de Voz, consulte Regiones de servicio de Voz.

  • Un archivo de audio (menos de 2 horas y menos de 200 MB de tamaño) en uno de los formatos y códecs admitidos por la API de transcripción por lotes. Para obtener más información sobre los formatos de audio admitidos, consulte formatos de audio admitidos.

Usar la API de transcripción rápida

La API de Transcripción rápida es una API de REST que usa datos de varias partes o formularios para enviar archivos de audio para la transcripción. La API devuelve los resultados de la transcripción de forma sincrónica.

Construya el cuerpo de la solicitud según las instrucciones siguientes:

  • Establezca la propiedad locales requerida. Esto debe coincidir con la configuración regional esperada de los datos de audio que se van a transcribir. Las configuraciones regionales admitidas son: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR y zh-CN. Obtenga más información en Soporte de idiomas del servicio de voz. Puede obtener los últimos idiomas compatibles a través de la API de REST Transcripciones: lista de configuraciones regionales admitidas
  • Opcionalmente, establezca la propiedad profanityFilterMode para especificar cómo controlar palabras soeces en los resultados del reconocimiento. Los valores aceptados son None para deshabilitar el filtrado de palabras soeces, Masked para reemplazar las palabras soeces por asteriscos, Removed para quitar todas las palabras soeces del resultado o Tags para agregar etiquetas de palabras soeces. El valor predeterminado es Masked. La propiedad profanityFilterMode funciona de la misma manera que a través de la API de transcripción por lotes.
  • Opcionalmente, establezca la propiedad channels para especificar los índices de base cero de los canales que se van a transcribir por separado. Si no se especifica, se combinan varios canales y se transcribirán conjuntamente. Solo se admiten hasta dos canales. Si desea transcribir los canales desde un archivo de audio estéreo por separado, debe especificar [0,1] aquí. De lo contrario, el audio estéreo se combinará con mono, el audio mono se dejará como está y solo se transcribirá un único canal. En cualquiera de los últimos casos, la salida no tiene índices de canal para el texto transcrito, ya que solo se transcribe una sola secuencia de audio.
  • Opcionalmente, establezca el diarizationSettings para reconocer y separar varios altavoces en el archivo de audio de canal mono. Debe especificar el número mínimo y máximo de personas que podrían estar hablando en el archivo de audio (por ejemplo, especifique "diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4}). A continuación, el archivo de transcripción contendrá una entrada speaker para cada frase transcrita. La característica no está disponible con audio estéreo al establecer la propiedad channels como [0,1].

Realice una solicitud POST multipart/form-data al punto de conexión transcriptions con el archivo de audio y las propiedades del cuerpo de la solicitud. En el ejemplo siguiente se muestra cómo crear una transcripción mediante la API de transcripción rápida.

  • Reemplace YourSubscriptionKey por su clave de recurso de Voz.
  • Reemplace YourServiceRegion por la región del recurso de Voz.
  • Reemplace YourAudioFile por la ruta de acceso al archivo de audio.
  • Establezca las propiedades de definición de formulario como se ha descrito anteriormente.
curl --location 'https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-05-15-preview' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'Ocp-Apim-Subscription-Key: YourSubscriptionKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    \"locales\":[\"en-US\"], 
    \"profanityFilterMode\": \"Masked\", 
    \"channels\": [0,1]}"'

La respuesta incluirá duration, channel y mucho más. La propiedad combinedPhrases contiene las transcripciones completas de cada canal por separado. Por ejemplo, todo lo que dijo el primer ponente está en el primer elemento de la matriz combinedPhrases, y todo lo que dijo el segundo ponente está en el segundo elemento de la matriz.

{
	"duration": 185079,
	"combinedPhrases": [
		{
			"channel": 0,
			"text": "Hello. Thank you for calling Contoso. Who am I speaking with today? Hi, Mary. Are you calling because you need health insurance? Great. If you can answer a few questions, we can get you signed up in the Jiffy. So what's your full name? Got it. And what's the best callback number in case we get disconnected? Yep, that'll be fine. Got it. So to confirm, it's 234-554-9312. Excellent. Let's get some additional information for your application. Do you have a job? OK, so then you have a Social Security number as well. OK, and what is your Social Security number please? Sorry, what was that, a 25 or a 225? You cut out for a bit. Alright, thank you so much. And could I have your e-mail address please? Great. Uh That is the last question. So let me take your information and I'll be able to get you signed up right away. Thank you for calling Contoso and I'll be able to get you signed up immediately. One of our agents will call you back in about 24 hours or so to confirm your application. Absolutely. If you need anything else, please give us a call at 1-800-555-5564, extension 123. Thank you very much for calling Contoso. Uh Yes, of course. So the default is a digital membership card, but we can send you a physical card if you prefer. Uh, yeah. Absolutely. I've made a note on your file. You're very welcome. Thank you for calling Contoso and have a great day."
		},
		{
			"channel": 1,
			"text": "Hi, my name is Mary Rondo. I'm trying to enroll myself with Contuso. Yes, yeah, I'm calling to sign up for insurance. Okay. So Mary Beth Rondo, last name is R like Romeo, O like Ocean, N like Nancy D, D like Dog, and O like Ocean again. Rondo. I only have a cell phone so I can give you that. Sure, so it's 234-554 and then 9312. Yep, that's right. Uh Yes, I am self-employed. Yes, I do. Uh Sure, so it's 412256789. It's double two, so 412, then another two, then five. Yeah, it's maryrondo@gmail.com. So my first and last name at gmail.com. No periods, no dashes. That was quick. Thank you. Actually, so I have one more question. I'm curious, will I be getting a physical card as proof of coverage? uh Yes. Could you please mail it to me when it's ready? I'd like to have it shipped to, are you ready for my address? So it's 2660 Unit A on Maple Avenue SE, Lansing, and then zip code is 48823. Awesome. Thanks so much."
		}
	],
	"phrases": [
		{
			"channel": 0,
			"offset": 720,
			"duration": 480,
			"text": "Hello.",
			"words": [
				{
					"text": "Hello.",
					"offset": 720,
					"duration": 480
				}
			],
			"locale": "en-US",
			"confidence": 0.9177142
		},
		{
			"channel": 0,
			"offset": 1200,
			"duration": 1120,
			"text": "Thank you for calling Contoso.",
			"words": [
				{
					"text": "Thank",
					"offset": 1200,
					"duration": 200
				},
				{
					"text": "you",
					"offset": 1400,
					"duration": 80
				},
				{
					"text": "for",
					"offset": 1480,
					"duration": 120
				},
				{
					"text": "calling",
					"offset": 1600,
					"duration": 240
				},
				{
					"text": "Contoso.",
					"offset": 1840,
					"duration": 480
				}
			],
			"locale": "en-US",
			"confidence": 0.9177142
		},
		{
			"channel": 0,
			"offset": 2320,
			"duration": 1120,
			"text": "Who am I speaking with today?",
			"words": [
				{
					"text": "Who",
					"offset": 2320,
					"duration": 160
				},
				{
					"text": "am",
					"offset": 2480,
					"duration": 80
				},
				{
					"text": "I",
					"offset": 2560,
					"duration": 80
				},
				{
					"text": "speaking",
					"offset": 2640,
					"duration": 320
				},
				{
					"text": "with",
					"offset": 2960,
					"duration": 160
				},
				{
					"text": "today?",
					"offset": 3120,
					"duration": 320
				}
			],
			"locale": "en-US",
			"confidence": 0.9177142
		},
        // More transcription results removed for brevity
        // {...},
		{
			"channel": 1,
			"offset": 4480,
			"duration": 1600,
			"text": "Hi, my name is Mary Rondo.",
			"words": [
				{
					"text": "Hi,",
					"offset": 4480,
					"duration": 400
				},
				{
					"text": "my",
					"offset": 4880,
					"duration": 120
				},
				{
					"text": "name",
					"offset": 5000,
					"duration": 120
				},
				{
					"text": "is",
					"offset": 5120,
					"duration": 160
				},
				{
					"text": "Mary",
					"offset": 5280,
					"duration": 240
				},
				{
					"text": "Rondo.",
					"offset": 5520,
					"duration": 560
				}
			],
			"locale": "en-US",
			"confidence": 0.8989456
		},
		{
			"channel": 1,
			"offset": 6080,
			"duration": 1920,
			"text": "I'm trying to enroll myself with Contuso.",
			"words": [
				{
					"text": "I'm",
					"offset": 6080,
					"duration": 160
				},
				{
					"text": "trying",
					"offset": 6240,
					"duration": 200
				},
				{
					"text": "to",
					"offset": 6440,
					"duration": 80
				},
				{
					"text": "enroll",
					"offset": 6520,
					"duration": 200
				},
				{
					"text": "myself",
					"offset": 6720,
					"duration": 360
				},
				{
					"text": "with",
					"offset": 7080,
					"duration": 120
				},
				{
					"text": "Contuso.",
					"offset": 7200,
					"duration": 800
				}
			],
			"locale": "en-US",
			"confidence": 0.8989456
		},
        // More transcription results removed for brevity
        // {...},
	]
}