Transcribe archivos de audio cortos

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En esta página, se demuestra cómo transcribir un archivo de audio corto a texto con el reconocimiento de voz síncrono.

El Reconocimiento de voz síncrono muestra el texto reconocido de un audio corto (menos de 60 segundos). Si quieres procesar una solicitud de reconocimiento de voz para un audio de más de 60 segundos, usa el reconocimiento de voz asíncrono.

El contenido de audio se puede enviar directamente a Speech-to-Text desde un archivo local, o se puede procesar contenido de audio almacenado en un bucket de Google Cloud Storage. Consulta la página de cuotas y límites para ver los límites de las solicitudes de reconocimiento de voz síncronas.

Realiza reconocimiento de voz síncrono en un archivo local

El siguiente es un ejemplo de cómo realizar un reconocimiento de voz síncrono en un archivo de audio local:

LÍNEA DE REST Y CMD

Consulta el extremo de la API de speech:recognize para obtener los detalles completos. Consulta la documentación de referencia de RecognitionConfig para obtener más información sobre cómo configurar el cuerpo de la solicitud.

El contenido de audio suministrado en el cuerpo de la solicitud debe estar codificado en base64. Para obtener más información sobre cómo codificar audio en Base64, consulta Contenido de audio con codificación Base64. Para obtener más información sobre el campo content, consulta RecognitionAudio.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LANGUAGE_CODE: Es el código BCP-47 del idioma que se habla en el clip de audio.
  • ENCODING: Es la codificación del audio que deseas transcribir.
  • SAMPLE_RATE_HERTZ: Es la tasa de muestreo en hercios del audio que deseas transcribir.
  • ENABLE_TIME_WORD_OFFSETS: Habilita este campo si deseas que se muestren compensaciones de tiempo de inicio y finalización de palabras (marcas de tiempo).
  • INPUT_AUDIO: Es la string codificada en Base64 de los datos de audio que deseas transcribir.

Método HTTP y URL:

POST https://speech.googleapis.com/v1/speech:recognize

Cuerpo JSON de la solicitud:

{
  "config":{
      "languageCode":"LANGUAGE_CODE",
      "encoding":ENCODING
      "sampleRateHertz":SAMPLE_RATE_HERTZ
      "enableTimeWordOffsets":ENABLE_TIME_WORD_OFFSETS
  },
  "audio":{
    "content":"INPUT_AUDIO"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

gcloud

Consulta el comando recognize para obtener los detalles completos.

Para realizar el reconocimiento de voz en un archivo local, usa Google Cloud CLI y pasa la ruta local del archivo a fin de realizar el reconocimiento de voz.

gcloud ml speech recognize PATH-TO-LOCAL-FILE --language-code='en-US'

Si la solicitud es exitosa, el servidor muestra una respuesta en formato JSON:

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.9840146,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

Go


func recognize(w io.Writer, file string) error {
	ctx := context.Background()

	client, err := speech.NewClient(ctx)
	if err != nil {
		return err
	}
	defer client.Close()

	data, err := ioutil.ReadFile(file)
	if err != nil {
		return err
	}

	// Send the contents of the audio file with the encoding and
	// and sample rate information to be transcripted.
	resp, err := client.Recognize(ctx, &speechpb.RecognizeRequest{
		Config: &speechpb.RecognitionConfig{
			Encoding:        speechpb.RecognitionConfig_LINEAR16,
			SampleRateHertz: 16000,
			LanguageCode:    "en-US",
		},
		Audio: &speechpb.RecognitionAudio{
			AudioSource: &speechpb.RecognitionAudio_Content{Content: data},
		},
	})

	// Print the results.
	for _, result := range resp.Results {
		for _, alt := range result.Alternatives {
			fmt.Fprintf(w, "\"%v\" (confidence=%3f)\n", alt.Transcript, alt.Confidence)
		}
	}
	return nil
}

Node.js

// Imports the Google Cloud client library
const fs = require('fs');
const speech = require('@google-cloud/speech');

// Creates a client
const client = new speech.SpeechClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const filename = 'Local path to audio file, e.g. /path/to/audio.raw';
// const encoding = 'Encoding of the audio file, e.g. LINEAR16';
// const sampleRateHertz = 16000;
// const languageCode = 'BCP-47 language code, e.g. en-US';

const config = {
  encoding: encoding,
  sampleRateHertz: sampleRateHertz,
  languageCode: languageCode,
};
const audio = {
  content: fs.readFileSync(filename).toString('base64'),
};

const request = {
  config: config,
  audio: audio,
};

// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
  .map(result => result.alternatives[0].transcript)
  .join('\n');
console.log('Transcription: ', transcription);

Python

def transcribe_file(speech_file):
    """Transcribe the given audio file."""
    from google.cloud import speech
    import io

    client = speech.SpeechClient()

    with io.open(speech_file, "rb") as audio_file:
        content = audio_file.read()

    audio = speech.RecognitionAudio(content=content)
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.LINEAR16,
        sample_rate_hertz=16000,
        language_code="en-US",
    )

    response = client.recognize(config=config, audio=audio)

    # Each result is for a consecutive portion of the audio. Iterate through
    # them to get the transcripts for the entire audio file.
    for result in response.results:
        # The first alternative is the most likely one for this portion.
        print(u"Transcript: {}".format(result.alternatives[0].transcript))

Lenguajes adicionales

C#: Sigue las instrucciones de configuración de C# en la página de bibliotecas cliente y, luego, visita la documentación de referencia de Speech-to-Text para .NET

PHP: Sigue las instrucciones de configuración de PHP en la página de bibliotecas cliente y, luego, visita la documentación de referencia de Speech-to-Text para PHP.

Ruby: Sigue las instrucciones de configuración de Ruby en la página Bibliotecas cliente y, luego, visita la documentación de referencia de Speech-to-Text para Ruby.

Realiza reconocimiento de voz síncrono en un archivo remoto

Para mayor comodidad, la API de Speech-to-Text puede realizar el reconocimiento de voz síncrono directamente en un archivo de audio ubicado en Google Cloud Storage sin necesidad de enviar el contenido del archivo de audio en el cuerpo de tu solicitud.

El siguiente es un ejemplo de cómo realizar un reconocimiento de voz síncrono en un archivo ubicado en Cloud Storage.

LÍNEA DE REST Y CMD

Consulta el extremo de la API de speech:recognize para obtener los detalles completos. Consulta la documentación de referencia de RecognitionConfig para obtener más información sobre cómo configurar el cuerpo de la solicitud.

El contenido de audio suministrado en el cuerpo de la solicitud debe estar codificado en base64. Para obtener más información sobre cómo codificar audio en Base64, consulta Contenido de audio con codificación Base64. Para obtener más información sobre el campo content, consulta RecognitionAudio.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • LANGUAGE_CODE: Es el código BCP-47 del idioma que se habla en el clip de audio.
  • ENCODING: Es la codificación del audio que deseas transcribir.
  • SAMPLE_RATE_HERTZ: Es la tasa de muestreo en hercios del audio que deseas transcribir.
  • ENABLE_TIME_WORD_OFFSETS: Habilita este campo si deseas que se muestren compensaciones de tiempo de inicio y finalización de palabras (marcas de tiempo).
  • STORAGE_BUCKET: Es un depósito de Cloud Storage.
  • INPUT_AUDIO: Es el archivo de datos de audio que deseas transcribir.

Método HTTP y URL:

POST https://speech.googleapis.com/v1/speech:recognize

Cuerpo JSON de la solicitud:

{
  "config":{
      "languageCode":"LANGUAGE_CODE",
      "encoding":ENCODING
      "sampleRateHertz":SAMPLE_RATE_HERTZ
      "enableTimeWordOffsets":ENABLE_TIME_WORD_OFFSETS
  },
  "audio":{
    "uri":"gs://STORAGE_BUCKET/INPUT_AUDIO"
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

gcloud

Consulta el comando recognize para obtener los detalles completos.

Para realizar el reconocimiento de voz en un archivo local, usa Google Cloud CLI y pasa la ruta local del archivo a fin de realizar el reconocimiento de voz.

gcloud ml speech recognize 'gs://cloud-samples-tests/speech/brooklyn.flac' \
--language-code='en-US'

Si la solicitud es exitosa, el servidor muestra una respuesta en formato JSON:

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.9840146,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

Go


func recognizeGCS(w io.Writer, gcsURI string) error {
	ctx := context.Background()

	client, err := speech.NewClient(ctx)
	if err != nil {
		return err
	}
	defer client.Close()

	// Send the request with the URI (gs://...)
	// and sample rate information to be transcripted.
	resp, err := client.Recognize(ctx, &speechpb.RecognizeRequest{
		Config: &speechpb.RecognitionConfig{
			Encoding:        speechpb.RecognitionConfig_LINEAR16,
			SampleRateHertz: 16000,
			LanguageCode:    "en-US",
		},
		Audio: &speechpb.RecognitionAudio{
			AudioSource: &speechpb.RecognitionAudio_Uri{Uri: gcsURI},
		},
	})

	// Print the results.
	for _, result := range resp.Results {
		for _, alt := range result.Alternatives {
			fmt.Fprintf(w, "\"%v\" (confidence=%3f)\n", alt.Transcript, alt.Confidence)
		}
	}
	return nil
}

Node.js

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

// Creates a client
const client = new speech.SpeechClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const gcsUri = 'gs://my-bucket/audio.raw';
// const encoding = 'Encoding of the audio file, e.g. LINEAR16';
// const sampleRateHertz = 16000;
// const languageCode = 'BCP-47 language code, e.g. en-US';

const config = {
  encoding: encoding,
  sampleRateHertz: sampleRateHertz,
  languageCode: languageCode,
};
const audio = {
  uri: gcsUri,
};

const request = {
  config: config,
  audio: audio,
};

// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
  .map(result => result.alternatives[0].transcript)
  .join('\n');
console.log('Transcription: ', transcription);

Python

def transcribe_gcs(gcs_uri):
    """Transcribes the audio file specified by the gcs_uri."""
    from google.cloud import speech

    client = speech.SpeechClient()

    audio = speech.RecognitionAudio(uri=gcs_uri)
    config = speech.RecognitionConfig(
        encoding=speech.RecognitionConfig.AudioEncoding.FLAC,
        sample_rate_hertz=16000,
        language_code="en-US",
    )

    response = client.recognize(config=config, audio=audio)

    # Each result is for a consecutive portion of the audio. Iterate through
    # them to get the transcripts for the entire audio file.
    for result in response.results:
        # The first alternative is the most likely one for this portion.
        print(u"Transcript: {}".format(result.alternatives[0].transcript))

Lenguajes adicionales

C#: Sigue las instrucciones de configuración de C# en la página de bibliotecas cliente y, luego, visita la documentación de referencia de Speech-to-Text para .NET

PHP: Sigue las instrucciones de configuración de PHP en la página de bibliotecas cliente y, luego, visita la documentación de referencia de Speech-to-Text para PHP.

Ruby: Sigue las instrucciones de configuración de Ruby en la página Bibliotecas cliente y, luego, visita la documentación de referencia de Speech-to-Text para Ruby.