Menggunakan layanan Microsoft Azure Speech untuk mengekstrak teks dari file audio

Halaman Diperbarui :
Tanggal pembuatan halaman :

Lingkungan pemeriksaan operasi

Layanan Suara Microsoft Azure
  • Edisi Juli 2022
Visual Studio
  • Studio Visual 2022
.NET (dalam bahasa Inggris)
  • 6.0

Prasyarat

Sebelum Anda dapat memverifikasi bahwa Tips ini berfungsi, Anda perlu:

Tentang bahan sampel

Kami meminjam file audio dari situs berikut. Itu tidak termasuk dalam kode sampel.

Pranala luar

Pada awalnya

Sebagai contoh, untuk merekam konten rapat, dll., Isi percakapan direkam, dan kemudian untuk membuat risalah rapat, audio yang direkam didengar dan ditranskripsikan menjadi teks. Namun, mudah untuk membayangkan bahwa sangat merepotkan untuk menuliskan isi percakapan menjadi sebuah kalimat.

Berikut cara menggunakan layanan Microsoft Azure Speech untuk mengekspor dan mengeluarkan data ucapan ke teks secara otomatis. Dalam contoh sebelumnya, ini adalah rekaman rapat, tetapi dalam Tips ini, itu diekstraksi dari file audio, sehingga dapat diterapkan pada apa pun yang berisi konten percakapan.

Juga, kali ini kita berbicara tentang menyalin ke teks, Anda juga dapat menggunakan layanan suara Microsoft Azure untuk mengonversi dan menerjemahkan saat merekam.

Tentang Biaya

Kali ini, kami akan menggunakan paket Gratis, jadi meskipun Anda mencoba mengoperasikannya, Anda tidak akan dikenakan biaya. Namun, paket Gratis memiliki batas waktu dan karakter, jadi jika Anda memerlukan lebih banyak konversi setelah benar-benar mengoperasikannya, silakan ubah ke paket berbayar.

Silakan merujuk ke halaman resmi berikut untuk harga. Karena ini adalah layanan cloud, biayanya dapat berfluktuasi tergantung pada musim.

Mengakses portal Microsoft Azure

Akses URL berikut di browser web:

Jika Anda sudah masuk, Anda sudah selesai. Jika Anda belum masuk, layar berikut akan ditampilkan, jadi silakan masuk.

Saat Anda masuk, layar berikut akan ditampilkan. Tergantung pada desain yang Anda atur, tampilannya mungkin berbeda.

Membuat layanan suara di Microsoft Azure

Jika Anda memasukkan "suara" di bidang input pencarian di atas portal, "layanan suara" akan keluar, jadi pilihlah.

「| Layanan Kognitif Ketika layar "Layanan Suara" ditampilkan, pilih "Buat".

Layar "Buat Layanan Ucapan" terbuka, jadi masukkan item yang diperlukan.

Dasar

Contoh input
konten item
abonemen Pilih langganan yang ingin Anda bayar. Bahkan jika itu gratis, Anda selalu perlu mengikatnya ke semacam langganan.
Grup Sumber Daya Menentukan di grup sumber daya mana layanan suara yang akan dibuat harus disertakan. Jika Anda belum membuatnya, silakan buat satu dari "Baru" di bawah ini. Anda dapat menganggap grup sumber daya sebagai pengelompokan saat Anda membuat berbagai layanan.
Wilayah Pilih di dekat tempat di mana Anda mungkin paling sering menggunakannya. Namun, harap dicatat bahwa harga dapat bervariasi menurut wilayah. Jepang Timur
Nama Nama apa pun untuk layanan suara ini. Jika Anda membuat lebih dari satu layanan suara, pastikan namanya deskriptif. Nama ini bersifat global dan unik, sehingga Anda tidak dapat menggunakan nama yang digunakan di tempat lain. SpeechToText-Test
Tingkat Harga Jika Anda ingin menggunakannya secara gratis, pilih "Free F0". Jika Anda ingin menggunakannya dengan biaya tertentu, silakan pilih paket lain. Tentu saja, ada batasan jika gratis. F0 gratis

Setelah dimasukkan, pilih Berikutnya: Jaringan > di bawah ini.

jaringan

Contoh input
konten item
jenis Menentukan rentang dari mana layanan suara ini dapat diakses. Jika Anda ingin dapat mengaksesnya dari mana saja tanpa pengaturan terperinci, pilih "Termasuk Internet ...". "Dapat diakses dari mana saja" juga berarti "siapa pun dapat mengaksesnya", tetapi pada kenyataannya hanya mereka yang memiliki "kunci" untuk diperoleh setelah ini yang dapat mengaksesnya, jadi itu bukan masalah dalam hal keamanan. Termasuk Internet...

Setelah Anda memasukkannya, pilih Berikutnya: Identitas > di bawah ini.

Identitas

Contoh input
konten item
ID terkelola yang ditetapkan sistem Kali ini saya menggunakan layanan suara saja, jadi ada baiknya untuk mematikannya. Off
ID terkelola yang ditetapkan pengguna Saya tidak perlu menambahkannya karena saya tidak membuat pengguna kali ini. tanpa

Setelah Anda memasukkannya, pilih Berikutnya: Beri tag > di bawah ini.

tag

Karena tag tidak digunakan kali ini, itu tidak diatur.

Setelah dimasukkan, pilih Berikutnya: Tinjau dan buat > di bawah ini.

Tinjau dan buat

Jika tidak ada masalah dengan konten input, "Validasi berhasil" ditampilkan. Jika ada masalah, pesan kesalahan akan ditampilkan, jadi kembali dan atur lagi.

Jika tidak ada masalah dengan konten input, klik tombol "Buat". Kemudian penyebaran akan dimulai.

Setelah beberapa saat, penyebaran selesai dan layar berikut ditampilkan. Nama penyebarannya panjang, tetapi Anda tidak perlu khawatir tentang hal itu karena bersifat sementara dalam penyebaran.

Anda dapat mengklik tombol Buka Sumber Daya untuk memverifikasi bahwa layanan suara telah dibuat.

Menghasilkan dan mengambil kunci

Kunci autentikasi diperlukan untuk mengakses layanan suara ini dari klien. Karena hanya dapat diakses oleh program yang memiliki kunci ini, maka perlu untuk mencegah kunci ini dicuri oleh pihak ketiga.

"Klien" di sini mengacu pada semua program yang menggunakan Microsoft Azure, seperti aplikasi desktop, aplikasi ponsel cerdas, dan aplikasi web.

Untuk mendapatkan kuncinya, buka layanan suara yang Anda buat. Ini dapat diakses dari dasbor, grup sumber daya, dan sebagainya.

Saat halaman Layanan Suara terbuka, pilih Kunci &Titik Akhir dari menu di sebelah kiri.

Kemudian, halaman "Kunci dan Titik Akhir" akan terbuka dan item "Kunci 1", "Kunci 2", "Lokasi/Wilayah" dan "Titik Akhir" akan ditampilkan.

Kedua item diperlukan, tetapi "Kunci 2" adalah bingkai cadangan, sehingga tidak digunakan dalam banyak kasus.

Catat setiap nilai. Seperti yang disebutkan dalam deskripsi, tolong jangan membagikan kunci dengan pihak-pihak yang berkembang secara tak terduga.

Jika kunci bocor, klik "Regenerasi Kunci 1" di atas untuk mengeluarkan kunci baru. Tentu saja, ketahuilah bahwa dalam hal ini, kunci sebelumnya tidak akan lagi dapat digunakan.

Menggunakan layanan ucapan dari program untuk mengekstrak teks dari ucapan

Mulai sekarang, penggunaan layanan suara akan berubah tergantung pada program yang digunakan. Kali ini, saya akan mengaksesnya dari aplikasi desktop .NET, tetapi jika Anda menggunakan kerangka kerja lain, coba gunakan di Internet. Situs web resmi juga memiliki instruksi tentang cara menggunakannya dalam beberapa bahasa.

Kali ini, kami membuat aplikasi desktop WPF di Visual Studio 2022. Dalam kasus Visual Studio Code, ini sedikit merepotkan karena tidak ada desainer, tetapi jika Anda hanya mengekstrak bagian program, dimungkinkan untuk menggunakannya di aplikasi konsol atau aplikasi web.

Buat Proyek

Mulai Visual Studio 2022.

Pilih Buat Proyek Baru.

Pilih Aplikasi WPF.

Nama dan lokasi proyek sewenang-wenang. Setelah dimasukkan, pilih Berikutnya.

Versi ini disebut ". BERSIH 6.0". Setelah diatur, klik tombol "Buat".

Pengaturan NuGet

Anda dapat membuat akses ke Microsoft Azure API dari awal, tetapi lebih mudah untuk menggunakannya karena Anda sudah memiliki pustaka resmi.

Klik kanan Dependensi untuk solusi dan pilih Kelola Paket NuGet.

Pilih tab "Browse", masukkan "Microsoft.CognitiveServices.Speech" di bidang input pencarian, dan daftar akan ditampilkan, jadi pilih "Microsoft.CognitiveServices.Speech" dan klik tombol Install.

Klik baik tombol.

Pilih Saya setuju.

Setelah selesai, itu akan ditambahkan ke paket.

Membuat UI

Kali ini, kita akan menentukan file WAV yang berisi audio dan mengekstrak konten percakapan menjadi teks dengan Speech API dan membuatnya ditampilkan. Untuk saat ini, biarkan lingkungan bergantung pada bidang input sehingga Anda dapat menggunakan kode dengan menyalin dan menempel.

Layar akan terlihat seperti ini: Karena hanya jumlah minimum yang disertakan, jika Anda ingin menambahkan tombol referensi file misalnya, silakan terapkan sendiri.

MainWindow.xaml adalah sebagai berikut:

<Window x:Class="MicrosoftAzureSpeechToText.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MicrosoftAzureSpeechToText"
        mc:Ignorable="d"
        Title="Microsoft Azure の音声サービスを使用したテキスト抽出" Height="450" Width="800">
  <Grid>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="20*"/>
      <ColumnDefinition Width="80*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="auto"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Label Content="キー" Margin="4"/>
    <TextBox x:Name="KeyTextBox" Grid.Column="1" HorizontalAlignment="Stretch" Margin="4" Text="" />
    <Label Content="場所/地域" Margin="4" Grid.Row="1"/>
    <TextBox x:Name="RegionTextBox" Grid.Column="1" HorizontalAlignment="Stretch" Margin="4" Text="japaneast" Grid.Row="1"/>
    <Label Content="言語" Margin="4" Grid.Row="2"/>
    <TextBox x:Name="LanguageTextBox" Grid.Column="1" HorizontalAlignment="Stretch" Margin="4" Text="ja-JP" Grid.Row="2"/>
    <Label Content="WAV ファイルパス" Margin="4" Grid.Row="3"/>
    <TextBox x:Name="WavFilePathTextBox" Grid.Column="1" HorizontalAlignment="Stretch" Margin="4" Text="" Grid.Row="3"/>
    <Button x:Name="ExecuteButton" Content="実行" Margin="4" Grid.Row="4" Grid.ColumnSpan="2" FontSize="24" Click="ExecuteButton_Click"/>
    <Label Content="結果" Margin="4,2,4,2" Grid.Row="5"/>
    <TextBox x:Name="ResultTextBox" Margin="8" TextWrapping="Wrap" Text="" Grid.Row="6" Grid.ColumnSpan="2" VerticalScrollBarVisibility="Visible" />
  </Grid>
</Window>

Membuat Proses

Program ini ExecuteButton_Click semuanya dibungkus dengan metode. Jika Anda ingin menggunakannya dalam kerangka kerja lain, tulis ulang kode ini sebagai basis.

MainWindow.xaml.cs

using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;
using System;
using System.Media;
using System.Threading.Tasks;
using System.Windows;

namespace MicrosoftAzureSpeechToText
{
  /// <summary>
  /// MainWindow.xamlのインタラクションロジック
  /// </summary>
  public partial class MainWindow : Window
  {
    public MainWindow()
    {
      InitializeComponent();
    }

    private void AppendLineLog(string log)
    {
      // 非同期処理から書き込むので Dispatcher.Invoke を使用
      Dispatcher.Invoke(()=>ResultTextBox.AppendText(log + Environment.NewLine));
    }

    private async void ExecuteButton_Click(object sender, RoutedEventArgs e)
    {
      // 入力内容をテキストボックスから取得
      var key = KeyTextBox.Text;
      var region = RegionTextBox.Text;
      var lang = LanguageTextBox.Text;
      var wavFilePath = WavFilePathTextBox.Text;

      try
      {
        // 音声ファイルが指定されているか確認するため再生する
        var wavPlayer = new SoundPlayer(wavFilePath);
        wavPlayer.Play();

        var stopRecognition = new TaskCompletionSource<int>();

        // 音声サービスを構成する
        var speechConfig = SpeechConfig.FromSubscription(key, region);
        AppendLineLog($"{speechConfig.Region} で音声サービスを使用する準備ができました。");

        // 音声認識言語の指定
        // 使用できる値一覧:https://docs.microsoft.com/ja-jp/azure/cognitive-services/speech-service/language-support?tabs=speechtotext#speech-to-text
        speechConfig.SpeechRecognitionLanguage = lang;

        // 入力を WAV ファイルとして設定
        using var audioConfig = AudioConfig.FromWavFileInput(wavFilePath);
        using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);

        // 解析結果が受信されたことを通知します。
        // このイベントは抽出が完了したものから随時発生します。
        speechRecognizer.Recognized += (s, e) =>
        {
          if (e.Result.Reason == ResultReason.RecognizedSpeech)
          {
            // 音声結果に認識されたテキストが含まれていることを示します。
            var time = TimeSpan.FromSeconds(e.Result.OffsetInTicks / 10000000).ToString(@"hh\:mm\:ss");
            var text = $"{time} {e.Result.Text}";
            AppendLineLog(text);
          }
          else if (e.Result.Reason == ResultReason.NoMatch)
          {
            // 音声を認識できなかったことを示します。
            AppendLineLog("音声を認識できませんでした。");
          }
        };

        // 音声認識が中断されたことを通知します。
        speechRecognizer.Canceled += (s, e) =>
        {
          AppendLineLog($"処理が終了しました。(Reason={e.Reason})");

          if (e.Reason == CancellationReason.Error)
          {
            AppendLineLog($"ErrorCode={e.ErrorCode}\r\n");
            AppendLineLog($"ErrorDetails={e.ErrorDetails}\r\n");
          }

          stopRecognition.TrySetResult(0);
        };

        // 継続的な処理を開始します。 StopContinuousRecognitionAsync を使用して処理を停止します。
        await speechRecognizer.StartContinuousRecognitionAsync().ConfigureAwait(false);

        // 完了するのを待ちます。Task.WaitAny を使用して、タスクをルート化してください。
        Task.WaitAny(new[] { stopRecognition.Task });

        // 処理を停止します。
        await speechRecognizer.StopContinuousRecognitionAsync().ConfigureAwait(false);
      }
      catch (Exception ex)
      {
        // 何らかの例外が発生した場合はエラー内容を出力
        AppendLineLog(ex.Message);
      }

      MessageBox.Show("処理が終了しました。");
    }
  }
}

Karena penjelasannya hampir tertulis dalam kode, saya tidak akan menjelaskan secara rinci, tetapi jika Anda mengangkat bagian penting, itu akan menjadi sebagai berikut.

  • SpeechConfig Mengonfigurasi Layanan Suara di
  • AudioConfig Menyiapkan data suara di
  • SpeechRecognizer Hasilkan Kelas Pemrosesan di
  • Data ucapan dianalisis satu per satu, dan teks SpeechRecognizer.Recognized yang diselesaikan diteruskan dalam acara dari waktu ke waktu.
  • Jika pemrosesan selesai karena alasan tertentu, SpeechRecognizer.Canceled suatu peristiwa disebut
  • Awal pemrosesan SpeechRecognizer.StartContinuousRecognitionAsync disebut metode, dan penyelesaian pemrosesan SpeechRecognizer.StopContinuousRecognitionAsync disebut metode.

Pemeriksaan operasi

Setelah membuat program, jalankan, masukkan item yang diperlukan dan tekan tombol jalankan. Jika Anda telah menentukan file audio yang benar, audio harus diputar dan teks harus diekstraksi satu per satu menggunakan layanan suara Microsoft Azure di belakang layar.

Sistem ekstraksi tidak sempurna karena tergantung pada layanan suara Microsoft Azure, Jika suaranya tenang dan berbicara dengan jelas, saya pikir itu akan diekstraksi dengan akurasi yang cukup besar. Karena ini adalah layanan cloud, bahkan jika akurasinya tidak begitu tinggi sekarang, mungkin akan menjadi lebih baik sebelum Anda menyadarinya, jadi mudah untuk tidak melakukan apa pun di area itu.