Usa la API de Speech-to-Text con C#

Usa la API de Speech-to-Text con C#

Acerca de este codelab

subjectÚltima actualización: jun 26, 2023
account_circleEscrito por Mete Atamel

1. Descripción general

La API de Google Cloud Speech-to-Text permite que los desarrolladores conviertan audio en texto en 120 idiomas y variantes mediante la aplicación de potentes modelos de redes neuronales en una API fácil de usar.

En este codelab, te enfocarás en el uso de la API de Speech-to-Text con C#. Aprenderás a enviar un archivo de audio en inglés y otros idiomas a la API de Cloud Speech-to-Text para su transcripción.

Qué aprenderás

  • Cómo usar Cloud Shell
  • Cómo habilitar la API de Speech-to-Text
  • Cómo autenticar solicitudes a la API
  • Cómo instalar la biblioteca cliente de Google Cloud para C#
  • Cómo transcribir archivos de audio en inglés
  • Cómo transcribir archivos de audio con marcas de tiempo de palabras
  • Cómo transcribir archivos de audio en diferentes idiomas

Requisitos

  • Un proyecto de Google Cloud Platform
  • Un navegador como Chrome o Firefox
  • Conocimientos de C#

Encuesta

.

¿Cómo usarás este instructivo?

¿Cómo calificarías tu experiencia con C#?

¿Cómo calificarías tu experiencia en el uso de los servicios de Google Cloud Platform?

2. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
  • El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto.
  • Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.

Inicia Cloud Shell

Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

Activar Cloud Shell

  1. En la consola de Cloud, haz clic en Activar Cloud Shelld1264ca30785e435.png.

cb81e7c8e34bc8d.png

Si es la primera vez que inicias Cloud Shell, verás una pantalla intermedia que describe en qué consiste. Si apareció una pantalla intermedia, haz clic en Continuar.

d95252b003979716.png

El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.

7833d5e1c5d18f54.png

Esta máquina virtual está cargada con todas las herramientas de desarrollo necesarias. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que mejora considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer con un navegador.

Una vez que te conectes a Cloud Shell, deberías ver que estás autenticado y que el proyecto está configurado con tu ID del proyecto.

  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que tienes la autenticación:
gcloud auth list

Resultado del comando

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Ejecuta el siguiente comando en Cloud Shell para confirmar que el comando de gcloud conoce tu proyecto:
gcloud config list project

Resultado del comando

[core]
project = <PROJECT_ID>

De lo contrario, puedes configurarlo con el siguiente comando:

gcloud config set project <PROJECT_ID>

Resultado del comando

Updated property [core/project].

3. Habilita la API de Speech-to-Text

Antes de comenzar a usar la API de Speech-to-Text, debes habilitarla. Puedes habilitar la API con el siguiente comando en Cloud Shell:

gcloud services enable speech.googleapis.com

4. Instala la biblioteca cliente de la API de Google Cloud Speech-to-Text para C#

Primero, crea una aplicación de consola de C# simple que utilizarás para ejecutar muestras de la API de Speech-to-Text:

dotnet new console -n SpeechToTextApiDemo

Deberías ver que se creó la aplicación y que se resolvieron las dependencias:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Luego, navega a la carpeta SpeechToTextApiDemo:

cd SpeechToTextApiDemo/

Además, agrega el paquete NuGet Google.Cloud.Speech.V1 al proyecto:

dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log  
: Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info
: PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.

Ya está todo listo para que uses la API de Speech-to-Text.

5. Transcribir archivos de audio

En esta sección, transcribirás un archivo de audio pregrabado en inglés. El archivo de audio está disponible en Google Cloud Storage.

Para transcribir un archivo de audio, abre el editor de código desde la parte superior derecha de Cloud Shell:

fd3fc1303e63572.png

Navega al archivo Program.cs dentro de la carpeta SpeechToTextApiDemo y reemplaza el código por lo siguiente:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
   
public class Program
   
{
       
public static void Main(string[] args)
       
{
           
var speech = SpeechClient.Create();
           
var config = new RecognitionConfig
           
{
               
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
               
SampleRateHertz = 16000,
               
LanguageCode = LanguageCodes.English.UnitedStates
           
};
           
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");        
           
           
var response = speech.Recognize(config, audio);

           
foreach (var result in response.Results)
           
{
               
foreach (var alternative in result.Alternatives)
               
{
                   
Console.WriteLine(alternative.Transcript);
               
}
           
}
       
}
   
}
}

Tómate uno o dos minutos para estudiar el código y comprobar que se usa para transcribir un archivo de audio.**

El parámetro Encoding le indica a la API qué tipo de codificación de audio usas para el archivo de audio. Flac es el tipo de codificación para archivos sin procesar (consulta el documento para conocer el tipo de codificación y obtener más detalles).

En el objeto RecognitionAudio, puedes pasar a la API el URI de nuestro archivo de audio en Cloud Storage o la ruta de acceso local del archivo. Aquí, usamos un URI de Cloud Storage.

En Cloud Shell, ejecuta la app:

dotnet run

Deberías ver el siguiente resultado:

how old is the Brooklyn Bridge

Resumen

En este paso, pudiste transcribir un archivo de audio en inglés y, luego, imprimir el resultado. Obtén más información sobre la transcripción.

6. Transcribir con marcas de tiempo de palabras

Speech-to-Text puede detectar la compensación horaria (marca de tiempo) para el audio transcrito. Las compensaciones horarias muestran el principio y el final de cada palabra pronunciada en el audio suministrado. Un valor de compensación horaria representa la cantidad de tiempo que transcurrió desde el comienzo del audio, en incrementos de 100 ms.

Para transcribir un archivo de audio con compensaciones de tiempo, navega al archivo Program.cs dentro de la carpeta SpeechToTextApiDemo y reemplaza el código por lo siguiente:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
   
public class Program
   
{
       
public static void Main(string[] args)
       
{
           
var speech = SpeechClient.Create();
           
var config = new RecognitionConfig
           
{
               
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
               
SampleRateHertz = 16000,
               
LanguageCode = LanguageCodes.English.UnitedStates,
               
EnableWordTimeOffsets = true
           
};
           
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
     
           
var response = speech.Recognize(config, audio);

           
foreach (var result in response.Results)
           
{
               
foreach (var alternative in result.Alternatives)
               
{
                   
Console.WriteLine($"Transcript: { alternative.Transcript}");
                   
Console.WriteLine("Word details:");
                   
Console.WriteLine($" Word count:{alternative.Words.Count}");
                   
foreach (var item in alternative.Words)
                   
{
                       
Console.WriteLine($"  {item.Word}");
                       
Console.WriteLine($"    WordStartTime: {item.StartTime}");
                       
Console.WriteLine($"    WordEndTime: {item.EndTime}");
                   
}
               
}
           
}
       
}
   
}
}

Tómate uno o dos minutos para estudiar el código y ver que se usa para transcribir un archivo de audio con marcas de tiempo de palabras*.* El parámetro EnableWordTimeOffsets le indica a la API que habilite las compensaciones horarias (consulta el documento para obtener más detalles).

En Cloud Shell, ejecuta la app:

dotnet run

Deberías ver el siguiente resultado:

dotnet run

Transcript: how old is the Brooklyn Bridge
Word details:
 
Word count:6
  how
   
WordStartTime: "0s"
   
WordEndTime: "0.300s"
  old
   
WordStartTime: "0.300s"
   
WordEndTime: "0.600s"
 
is
   
WordStartTime: "0.600s"
   
WordEndTime: "0.800s"
  the
   
WordStartTime: "0.800s"
   
WordEndTime: "0.900s"
 
Brooklyn
   
WordStartTime: "0.900s"
   
WordEndTime: "1.100s"
 
Bridge
   
WordStartTime: "1.100s"
   
WordEndTime: "1.500s"

Resumen

En este paso, pudiste transcribir un archivo de audio en inglés con marcas de tiempo de palabras e imprimir el resultado. Obtén más información sobre cómo transcribir con compensaciones de palabras.

7. Transcribe diferentes idiomas

La API de Speech-to-Text admite transcripciones en más de 100 idiomas. Consulta la lista de idiomas admitidos aquí.

En esta sección, transcribirás un archivo de audio pregrabado en francés. El archivo de audio está disponible en Google Cloud Storage.

Para transcribir el archivo de audio en francés, navega al archivo Program.cs dentro de la carpeta SpeechToTextApiDemo y reemplaza el código por lo siguiente:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
   
public class Program
   
{
       
public static void Main(string[] args)
       
{
           
var speech = SpeechClient.Create();
           
var config = new RecognitionConfig
           
{
               
Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
               
LanguageCode = LanguageCodes.French.France
           
};
           
var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");

           
var response = speech.Recognize(config, audio);

           
foreach (var result in response.Results)
           
{
               
foreach (var alternative in result.Alternatives)
               
{
                   
Console.WriteLine(alternative.Transcript);
               
}
           
}
       
}
   
}
}

Tómate uno o dos minutos para estudiar el código y ver cómo se usa para transcribir un archivo de audio.** El parámetro LanguageCode le indica a la API en qué idioma está la grabación de audio.

En Cloud Shell, ejecuta la app:

dotnet run

Deberías ver el siguiente resultado:

maître corbeau sur un arbre perché tenait en son bec un fromage

Esta es una frase de un popular cuento infantil francés.

Resumen

En este paso, pudiste transcribir un archivo de audio en francés y, luego, imprimir el resultado. Obtén más información sobre los idiomas compatibles.

8. ¡Felicitaciones!

Aprendiste a usar la API de Speech-to-Text con C# para realizar diferentes tipos de transcripciones en archivos de audio.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos de esta guía de inicio rápido:

  • Ve a la consola de Google Cloud.
  • Selecciona el proyecto que deseas cerrar y haz clic en “Borrar”. en la parte superior: esta opción programa la eliminación del proyecto.

Más información

Licencia

Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.