Cvičení – vytvoření řeči na rozpoznávání na textovou aplikaci s jedním snímkem

Dokončeno

V tomto cvičení vytvoříte aplikaci, která pomocí rozpoznávání s jedním snímkem přepisuje ukázkový zvukový soubor, který si stáhnete.

Vytvoření aplikace pro převod řeči na text

  1. V Cloud Shellu napravo vytvořte adresář pro vaši aplikaci a pak přejděte na nový adresář:

    mkdir speech-to-text
    cd speech-to-text
    
  2. Vytvořte novou aplikaci .NET Core:

    dotnet new console
    

    Dokončení tohoto příkazu by mělo trvat několik sekund.

  3. Po vytvoření aplikace .NET Core přidejte do své aplikace balíček Sady Speech SDK:

    dotnet add package Microsoft.CognitiveServices.Speech
    

    Dokončení tohoto příkazu by mělo trvat několik sekund.

Stažení souboru WAVE pro rozpoznávání

V Cloud Shellu napravo spusťte následující příkaz, který stáhne ukázkový soubor WAV, který obsahuje řadu uvozovek z Williama Williama Jako se to líbí.

curl -L https://aka.ms/ShakespeareWAV -o Shakespeare.wav

Tento soubor WAV použijete pro aplikaci v tomto cvičení a aplikaci v dalším cvičení.

Přidání kódu pro text do aplikace speech

  1. V Cloud Shellu napravo otevřete soubor Program.cs :

    code Program.cs
    
  2. Odeberte veškerý existující kód a přidejte následující using příkazy, které umožňují rozhraní API služby Azure AI Speech pro vaši aplikaci:

    using System.Text;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
  3. Přidejte následující kód, který používá rozhraní API služby Azure AI Speech k převodu obsahu souboru WAV, který jste vytvořili dříve, a vytvořte textový soubor s přepisovanou řečí. azureKey Nahraďte hodnoty azureLocation hodnotami, které jste zkopírovali v posledním cvičení.

    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    Tento kód používá váš klíč a umístění k inicializaci připojení k Azure AI Speech. Pak přečte obsah souboru WAV, který jste stáhli, a pak použije RecognizeOnceAsync() metodu SpeechRecognizer převodu zvuku na text a pak použije zapisovač streamu k uložení výsledků do textového souboru.

  4. Až dokončíte přidání veškerého kódu, měl by se váš soubor podobat následujícímu příkladu:

    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    Nezapomeňte aktualizovat hodnoty pro azureKey proměnné azureLocation pomocí klíče a umístění z předchozího cvičení.

  5. Pokud chcete uložit změny, uložte stisknutím Ctrl+S soubor a pak stisknutím Ctrl+Q ukončete editor.

Spusťte aplikaci

  1. Ke spuštění aplikace použijte následující příkaz v Cloud Shellu napravo:

    dotnet run
    
  2. Pokud se nezobrazí žádné chyby, vaše aplikace se úspěšně spustila a měly by se zobrazit následující odpovědi:

    Speech recognition started.
    Speech recognition stopped.
    
  3. Spuštěním následujícího příkazu získejte seznam souborů v adresáři:

    ls -l
    

    Měla by se zobrazit odpověď podobná následujícímu příkladu a v seznamu souborů by se měla zobrazit soubor Shakespeare.txt :

    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 bin
    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 obj
    -rw-r--r-- 1 user   user     1476 Oct  1 11:11 Program.cs
    -rw-r--r-- 1 user   user       98 Oct  1 11:11 Shakespeare.txt
    -rwxr-xr-x 1 user   user   978242 Oct  1 11:11 Shakespeare.wav
    -rw-r--r-- 1 user   user      348 Oct  1 11:11 speech to text.csproj
    

    Všimněte si, že velikost textového souboru je malá; v tomto příkladu je to jenom 98 bajtů.

  4. Pokud chcete zobrazit obsah souboru Shakespeare.txt , použijte následující příkaz:

    cat Shakespeare.txt
    

    Měla by se zobrazit odpověď podobná následujícímu příkladu:

    The following quotes are from Act 2, scene seven of William Shakespeare's play as you like it.
    

    Pokud jste si poslechli ukázkový soubor WAV, všimli byste si, že tento text je jenom několik sekund zvuku. Vzhledem k tomu, že jsme použili RecognizeOnceAsync() metodu SpeechRecognizer, rozpoznávání řeči na text se zastavilo, když se reproduktor pozastavil.

V dalším cvičení se dozvíte, jak pokračovat v rozpoznávání řeči na text pro celý zvukový soubor.