Menggunakan layanan Microsoft Azure Speech untuk mengekstrak teks dari file audio
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:
- Membuat akun Microsoft (Referensi: Membuat akun Microsoft)
- Membuat akun Microsoft Azure (Referensi: Membuat akun Microsoft Azure)
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 inputkonten | 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 inputkonten | 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 inputkonten | 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 diAudioConfig
Menyiapkan data suara diSpeechRecognizer
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 pemrosesanSpeechRecognizer.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.