Cvičení – vytvoření řeči na rozpoznávání na textovou aplikaci s jedním snímkem
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
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
Vytvořte novou aplikaci .NET Core:
dotnet new console
Dokončení tohoto příkazu by mělo trvat několik sekund.
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
V Cloud Shellu napravo otevřete soubor Program.cs :
code Program.cs
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;
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 hodnotyazureLocation
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()
metoduSpeechRecognizer
převodu zvuku na text a pak použije zapisovač streamu k uložení výsledků do textového souboru.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í.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
Ke spuštění aplikace použijte následující příkaz v Cloud Shellu napravo:
dotnet run
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.
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ů.
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()
metoduSpeechRecognizer
, 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.