Utilizzo dell'API Speech-to-Text con C#

1. Panoramica

L'API Google Cloud Speech-to-Text consente agli sviluppatori di convertire l'audio in testo in 120 lingue e varianti, applicando efficaci modelli di rete neurale in un'API semplice da usare.

In questo codelab, ti concentrerai sull'utilizzo dell'API Speech-to-Text con C#. Imparerai a inviare un file audio in inglese e in altre lingue all'API Cloud Speech-to-Text per la trascrizione.

Cosa imparerai a fare

  • Come utilizzare Cloud Shell
  • Come abilitare l'API Speech-to-Text
  • Come autenticare le richieste API
  • Come installare la libreria client di Google Cloud per C#
  • Come trascrivere file audio in inglese
  • Come trascrivere i file audio con timestamp delle parole
  • Come trascrivere file audio in diverse lingue

Che cosa ti serve

  • Un progetto Google Cloud
  • Un browser, ad esempio Chrome o Firefox
  • Familiarità con l'utilizzo di C#

Sondaggio

Come utilizzerai questo tutorial?

Solo lettura Leggilo e completa gli esercizi

Come valuteresti la tua esperienza con C#?

Principiante Livello intermedio Eccellente

Come giudichi la tua esperienza di utilizzo dei servizi della piattaforma Google Cloud?

Principiante Livello intermedio Eccellente

2. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo autonomo

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
  • L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come PROJECT_ID). Se l'ID generato non ti soddisfa, potresti generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto.
  • Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. L'esecuzione di questo codelab non ha alcun costo. Per arrestare le risorse ed evitare di incorrere in fatturazione dopo questo tutorial, puoi eliminare le risorse che hai creato o eliminare il progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.

Avvia Cloud Shell

Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

Attiva Cloud Shell

  1. Dalla console Cloud, fai clic su Attiva Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

Se è la prima volta che avvii Cloud Shell, ti verrà mostrata una schermata intermedia che descrive di cosa si tratta. Se ti è stata presentata una schermata intermedia, fai clic su Continua.

d95252b003979716.png

Il provisioning e la connessione a Cloud Shell dovrebbero richiedere solo qualche istante.

7833d5e1c5d18f54.png

Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Gran parte, se non tutto, del lavoro in questo codelab può essere svolto con un browser.

Una volta stabilita la connessione a Cloud Shell, dovresti vedere che hai eseguito l'autenticazione e che il progetto è impostato sul tuo ID progetto.

  1. Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list

Output comando

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Esegui questo comando in Cloud Shell per confermare che il comando gcloud è a conoscenza del tuo progetto:
gcloud config list project

Output comando

[core]
project = <PROJECT_ID>

In caso contrario, puoi impostarlo con questo comando:

gcloud config set project <PROJECT_ID>

Output comando

Updated property [core/project].

3. Abilita l'API Speech-to-Text

Prima di poter iniziare a utilizzare l'API Speech-to-Text, devi abilitare l'API. Puoi abilitare l'API utilizzando il comando seguente in Cloud Shell:

gcloud services enable speech.googleapis.com

4. Installa la libreria client dell'API Google Cloud Speech-to-Text per C#

Innanzitutto, crea una semplice applicazione console C# che utilizzerai per eseguire esempi dell'API Speech-to-Text:

dotnet new console -n SpeechToTextApiDemo

Dovresti vedere l'applicazione creata e le dipendenze risolte:

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

Quindi, vai alla cartella SpeechToTextApiDemo:

cd SpeechToTextApiDemo/

E aggiungi il pacchetto NuGet Google.Cloud.Speech.V1 al progetto:

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'.

Ora è tutto pronto per utilizzare l'API Speech-to-Text.

5. Trascrivi file audio

In questa sezione trascriverai un file audio preregistrato in inglese. Il file audio è disponibile su Google Cloud Storage.

Per trascrivere un file audio, apri l'editor di codice dall'angolo in alto a destra di Cloud Shell:

fd3fc1303e63572.png

Vai al file Program.cs all'interno della cartella SpeechToTextApiDemo e sostituisci il codice con il seguente:

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);
                }
            }
        }
    }
}

Prenditi un minuto o due per studiare il codice e vedere che viene utilizzato per trascrivere un file audio.*.*

Il parametro Encoding indica all'API il tipo di codifica audio utilizzato per il file audio. Flac è il tipo di codifica per i file .raw (per ulteriori dettagli, consulta il documento relativo al tipo di codifica).

Nell'oggetto RecognitionAudio, puoi passare all'API l'URI del nostro file audio in Cloud Storage o il percorso del file locale. In questo caso stiamo utilizzando un URI di Cloud Storage.

Torna in Cloud Shell ed esegui l'app:

dotnet run

Dovresti vedere l'output seguente:

how old is the Brooklyn Bridge

Riepilogo

In questo passaggio hai trascritto un file audio in inglese e hai stampato il risultato. Scopri di più sulla Trascrizione.

6. Trascrivi con timestamp delle parole

Speech-to-Text è in grado di rilevare l'offset temporale (timestamp) per l'audio trascritto. Gli offset temporali mostrano l'inizio e la fine di ogni parlato nell'audio fornito. Il valore di offset di tempo rappresenta la quantità di tempo trascorso dall'inizio dell'audio, in incrementi di 100 ms.

Per trascrivere un file audio con offset temporali, vai al file Program.cs all'interno della cartella SpeechToTextApiDemo e sostituisci il codice con il seguente codice:

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}");
                    }
                }
            }
        }
    }
}

Prenditi un minuto o due per studiare il codice e vedere che viene utilizzato per trascrivere un file audio con timestamp*.* Il parametro EnableWordTimeOffsets indica all'API di abilitare gli offset temporali (per maggiori dettagli, consulta il documento).

Torna in Cloud Shell ed esegui l'app:

dotnet run

Dovresti vedere l'output seguente:

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"

Riepilogo

In questo passaggio, sei stato in grado di trascrivere un file audio in inglese con timestamp delle parole e stampare il risultato. Scopri di più sulla Trascrizione con offset di parole.

7. Trascrivere lingue diverse

L'API Speech-to-Text supporta la trascrizione in oltre 100 lingue. Puoi trovare un elenco delle lingue supportate qui.

In questa sezione trascriverai un file audio preregistrato in francese. Il file audio è disponibile su Google Cloud Storage.

Per trascrivere il file audio in francese, vai al file Program.cs all'interno della cartella SpeechToTextApiDemo e sostituisci il codice con il seguente codice:

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);
                }
            }
        }
    }
}

Prenditi un minuto o due per studiare il codice e scoprire come viene utilizzato per trascrivere un file audio*.* Il parametro LanguageCode indica all'API la lingua della registrazione audio.

Torna in Cloud Shell ed esegui l'app:

dotnet run

Dovresti vedere l'output seguente:

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

Questa è una frase di una famosa racconto per bambini francesi.

Riepilogo

In questo passaggio sei riuscito a trascrivere un file audio in francese e a stampare il risultato. Scopri di più sulle lingue supportate.

8. Complimenti!

Hai imparato a utilizzare l'API Speech-to-Text utilizzando C# per eseguire diversi tipi di trascrizione nei file audio.

Esegui la pulizia

Per evitare che al tuo account Google Cloud Platform vengano addebitate le risorse utilizzate in questa guida rapida, procedi come segue.

  • Vai alla console di Cloud Platform.
  • Seleziona il progetto che vuoi chiudere e fai clic su "Elimina". in alto: in questo modo viene pianificata l'eliminazione del progetto.

Scopri di più

Licenza

Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.