Упражнение. Создание речи распознавания с одним снимком в текстовом приложении
В этом упражнении вы создадите приложение, использующее однозастрелочное распознавание для транскрибирования примера аудиофайла, который будет скачан.
Создание речи в текстовом приложении
В Cloud Shell справа создайте каталог для приложения, а затем перейдите в новый каталог:
mkdir speech-to-text cd speech-to-text
Создайте новое приложение .NET Core:
dotnet new console
Эта команда должна занять несколько секунд.
После создания приложения .NET Core добавьте пакет пакета SDK службы "Речь" в приложение:
dotnet add package Microsoft.CognitiveServices.Speech
Эта команда должна занять несколько секунд.
Скачивание ФАЙЛА WAVE для распознавания
В Cloud Shell справа выполните следующую команду, чтобы скачать пример WAV-файла, который содержит ряд цитат из пьесы Уильяма Шекспира "Как вам нравится".
curl -L https://aka.ms/ShakespeareWAV -o Shakespeare.wav
Этот WAV-файл будет использоваться для приложения в этом упражнении и приложения в следующем упражнении.
Добавление кода для текста в приложение речи
В Cloud Shell справа откройте файл Program.cs :
code Program.cs
Удалите весь существующий код и добавьте следующие
using
инструкции, которые позволяют API службы "Речь Azure" для приложения:using System.Text; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio;
Добавьте следующий код, который использует API службы "Речь ИИ Azure" для преобразования содержимого файла WAV, созданного ранее для создания текстового файла с транскрибированным речью. Замените
azureKey
значения иazureLocation
значения, скопированные в последнем упражнении.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); }
Этот код использует ключ и расположение для инициализации подключения к службе "Речь ИИ Azure". Затем он считывает содержимое скачанного WAV-файла, а затем использует
RecognizeOnceAsync()
методSpeechRecognizer
преобразования звука в текст, а затем использует модуль записи потоков для сохранения результатов в текстовый файл.После завершения добавления всего кода файл должен выглядеть следующим образом:
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); }
Убедитесь, что вы обновляете значения для
azureKey
azureLocation
переменных с помощью ключа и расположения из предыдущего упражнения.Чтобы сохранить изменения в файле, нажмите CTRL + S, а затем CTRL + Q, чтобы закрыть редактор.
Запуск приложения
Чтобы запустить приложение, используйте следующую команду в Cloud Shell справа:
dotnet run
Если вы не видите никаких ошибок, приложение успешно запущено, и вы увидите следующие ответы:
Speech recognition started. Speech recognition stopped.
Выполните следующую команду, чтобы получить список файлов в каталоге:
ls -l
Вы должны увидеть ответ, как в следующем примере, и вы увидите Шекспир.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
Вы заметите, что размер текстового файла мал; в этом примере это всего 98 байт.
Чтобы просмотреть содержимое файла Шекспира.txt , используйте следующую команду:
cat Shakespeare.txt
Вы увидите ответ, как показано в следующем примере:
The following quotes are from Act 2, scene seven of William Shakespeare's play as you like it.
Если вы прослушивали образец WAV-файла, вы заметите, что этот текст составляет только первые несколько секунд звука. Так как мы использовали
RecognizeOnceAsync()
метод,SpeechRecognizer
речь к распознаванию текста остановлена при приостановке говорящего.
В следующем упражнении вы узнаете, как продолжить распознавание текста для всего звукового файла.