Použitie služby Microsoft Azure Speech na extrahovanie textu zo zvukového súboru
Prostredie kontroly prevádzky
- Hlasové služby Microsoft Azure
-
- Vydanie z júla 2022
- Vizuálne štúdio
-
- Vizuálne štúdio 2022
- .NET
-
- 6.0
Predpokladom
Skôr než budete môcť overiť, či tieto tipy fungujú, musíte:
- Vytvorenie konta Microsoft (odkaz: Vytvorenie konta Microsoft)
- Vytvorenie konta Microsoft Azure (Odkaz: Vytvorenie konta Microsoft Azure)
O vzorkových materiáloch
Požičiavame si zvukové súbory z nasledujúcej stránky. Nie je zahrnutá vo vzorovom kóde.
Externé odkazy
Najskôr
Napríklad na zaznamenanie obsahu stretnutia atď. sa zaznamená obsah rozhovoru a neskôr sa vytvorí zápisnica zo stretnutia, zaznamenaný zvuk sa počuje a prepisuje do textu. Je však ľahké si predstaviť, že je veľmi nepríjemné zapísať obsah rozhovoru do vety.
Tu je postup, ako používať službu Microsoft Azure Speech na automatický export a výstup údajov reči do textu. V predchádzajúcom príklade ide o nahrávku schôdze, ale v týchto tipoch sa extrahuje zo zvukového súboru, takže ju možno použiť na čokoľvek, čo obsahuje obsah konverzácie.
Tentoraz hovoríme aj o prepise textu, Môžete tiež použiť hlasovú službu Microsoft Azure na konverziu a preklad počas nahrávania.
O poplatkoch
Tentokrát použijeme bezplatný plán, takže aj keď sa pokúsite o prevádzku, nebude vám účtovaný žiadny poplatok. Bezplatný plán má však časové a charakterové limity, takže ak potrebujete väčšiu konverziu po jeho skutočnej prevádzke, prejdite na platený plán.
Ceny nájdete na nasledujúcej oficiálnej stránke. Keďže ide o cloudovú službu, poplatok môže kolísať v závislosti od ročného obdobia.
Prístup k portálu Microsoft Azure
Vo webovom prehliadači prejdite na nasledujúcu adresu URL:
Ak ste už prihlásení, máte hotovo. Ak ešte nie ste prihlásení, zobrazí sa nasledujúca obrazovka, preto sa prihláste.
Keď sa prihlásite, zobrazí sa nasledujúca obrazovka. V závislosti od dizajnu, ktorý nastavujete, sa displej môže líšiť.
Vytvorenie hlasovej služby v službe Microsoft Azure
Ak do vyhľadávacieho vstupného poľa nad portálom zadáte "hlas", zobrazí sa "hlasová služba", takže ju vyberte.
「| kognitívnych služieb Keď sa zobrazí obrazovka "Hlasová služba", vyberte možnosť "Vytvoriť".
Otvorí sa obrazovka "Vytvoriť rečové služby", takže zadajte potrebné položky.
Základy
Príklad vstupnéhoobsahu | položiek | |
---|---|---|
predplatné | Vyberte predplatné, za ktoré chcete zaplatiť. Aj keď je zadarmo, vždy ho musíte viazať na nejaký druh predplatného. | |
Skupiny zdrojov | Určuje, do ktorej skupiny zdrojov má hlasová služba, ktorá sa má vytvoriť, zahrnúť. Ak ste ho ešte nevytvorili, vytvorte si ho z časti "Nové" nižšie. Pri vytváraní rôznych služieb si môžete skupiny zdrojov predstaviť ako zoskupenia. | |
Región | Vyberte si v blízkosti miesta, kde ho môžete používať najčastejšie. Upozorňujeme však, že ceny sa môžu líšiť v závislosti od regiónu. | Japonsko na východe |
meno | Akýkoľvek názov pre túto hlasovú službu. Ak vytvárate viac ako jednu hlasovú službu, uistite sa, že názov je popisný. Tento názov je globálny a jedinečný, takže nemôžete použiť názov, ktorý sa používa inde. | SpeechToText-Test |
Cenová úroveň | Ak ho chcete používať zadarmo, vyberte "Free F0". Ak ho chcete použiť za poplatok, vyberte si iný plán. Samozrejme, existujú obmedzenia, ak je to zadarmo. | F0 zadarmo |
Po zadaní vyberte položku Next: Network > nižšie.
sieť
Príklad vstupnéhoobsahu | položiek | |
---|---|---|
láskavý | Určuje rozsah, z ktorého je táto hlasová služba prístupná. Ak chcete mať prístup odkiaľkoľvek bez akýchkoľvek podrobných nastavení, vyberte možnosť "Vrátane internetu...". "Je možné k nemu pristupovať odkiaľkoľvek" tiež znamená "ktokoľvek má prístup k nemu", ale v skutočnosti k nemu majú prístup iba tí, ktorí majú "kľúč", ktorý sa má získať po tomto, takže z hľadiska bezpečnosti to nie je až taký problém. | Vrátane internetu... |
Po jeho zadaní vyberte položku Next: Identity > nižšie.
Identita
Príklad vstupnéhoobsahu | položiek | |
---|---|---|
Spravovaná identifikácia priradená systému | Tentokrát používam hlasovú službu sám, takže je dobré ju vypnúť. | preč |
Spravovaná identifikácia priradená používateľom | Nemusím ho pridávať, pretože tentoraz nevytvorím používateľa. | bez |
Po jeho zadaní vyberte položku Ďalej: Označiť > nižšie.
štítok
Keďže sa značka tentoraz nepoužíva, nie je nastavená.
Po zadaní vyberte položku Ďalej: Skontrolovať a vytvorte > nižšie.
Kontrola a tvorba
Ak sa nevyskytnú žiadne problémy s obsahom vstupu, zobrazí sa text "Overenie bolo úspešné". Ak sa vyskytne problém, zobrazí sa chybové hlásenie, takže sa vráťte a znova ho nastavte.
Ak nie je problém so vstupným obsahom, kliknite na tlačidlo "Vytvoriť". Potom sa začne nasadenie.
Po chvíli sa nasadenie dokončí a zobrazí sa nasledujúca obrazovka. Názov nasadenia je dlhý, ale nemusíte sa oň starať, pretože je dočasne nasadený.
Kliknutím na tlačidlo Prejsť na zdroj overíte, či bola hlasová služba vytvorená.
Generovanie a načítanie kľúčov
Na prístup k tejto hlasovej službe od klienta je potrebný overovací kľúč. Pretože je prístupný iba programu, ktorý má tento kľúč, je potrebné zabrániť odcudzeniu tohto kľúča treťou stranou.
"Klient" sa tu vzťahuje na všetky programy, ktoré používajú Microsoft Azure, ako sú počítačové aplikácie, aplikácie pre smartfóny a webové aplikácie.
Ak chcete získať kľúč, prejdite do hlasovej služby, ktorú ste vytvorili. Je prístupný z tabúľ, skupín zdrojov atď.
Keď sa otvorí stránka Hlasové služby, v ponuke vľavo vyberte položku Kľúče a koncové body.
Potom sa otvorí stránka "Kľúč a koncový bod" a zobrazia sa položky "Kľúč 1", "Kľúč 2", "Umiestnenie / región" a "Koncový bod".
Obe položky sú potrebné, ale "Kľúč 2" je náhradný rám, takže sa vo väčšine prípadov nepoužíva.
Poznačte si každú hodnotu. Ako je uvedené v popise, nezdieľajte kľúč s vývojovými stranami neočakávane.
Ak kľúč uniká, kliknite na "Regenerovať kľúč 1" vyššie a vydajte nový kľúč. Samozrejme, uvedomte si, že v tomto prípade predchádzajúci kľúč už nebude použiteľný.
Použitie rečovej služby z programu na extrahovanie textu z reči
Odteraz sa bude používanie hlasovej služby meniť v závislosti od použitého programu. Tentokrát k nemu pristupujem z počítačovej aplikácie .NET, ale ak používate iný framework, skúste ho použiť na internete. Oficiálna webová stránka obsahuje aj pokyny, ako ju používať v niekoľkých jazykoch.
Tentokrát vytvárame počítačovú aplikáciu WPF v Visual Studio 2022. V prípade kódu Visual Studio je to trochu nepríjemné, pretože neexistuje žiadny dizajnér, ale ak extrahujete iba časť programu, je možné ju použiť v konzolovej aplikácii alebo webovej aplikácii.
Vytvorenie projektu
Spustite Visual Studio 2022.
Vyberte položku Vytvoriť nový projekt.
Vyberte položku Aplikácia WPF.
Názov projektu a umiestnenie sú ľubovoľné. Po zadaní vyberte položku Ďalej.
Verzia sa nazýva ". NET 6,0". Po nastavení kliknite na tlačidlo "Vytvoriť".
NuGet nastavenia
Prístup k rozhraniu Api Microsoft Azure môžete vytvoriť od začiatku, ale jeho používanie je jednoduchšie, pretože už máte oficiálnu knižnicu.
Kliknite pravým tlačidlom myši na položku Závislosti pre riešenie a vyberte položku Spravovať balíky NuGet.
Vyberte kartu "Prehľadávať", do vyhľadávacieho vstupného poľa zadajte "Microsoft.CognitiveServices.Speech" a zobrazí sa zoznam, takže vyberte "Microsoft.CognitiveServices.Speech" a kliknite na tlačidlo Inštalovať.
Kliknite na tlačidlo OK.
Vyberte položku Súhlasím.
Po dokončení sa pridá do balíka.
Vytvorenie používateľského rozhrania
Tentokrát zadáme súbor WAV obsahujúci zvuk a extrahujeme obsah konverzácie do textu pomocou rozhrania Speech API a zobrazíme ho. Zatiaľ nechajte prostredie závislé od vstupného poľa, aby ste mohli kód použiť skopírovaním a prilepením.
Obrazovka by mala vyzerať takto: Keďže je zahrnutá iba minimálna suma, ak chcete pridať napríklad tlačidlo odkazu na súbor, implementujte ho sami.
MainWindow.xaml
je nasledovná:
<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>
Vytvorenie procesu
Program ExecuteButton_Click
je zabalený do metód. Ak ho chcete použiť v iných rámcoch, prepíšte tento kód ako základ.
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("処理が終了しました。");
}
}
}
Keďže vysvetlenie je takmer napísané v kódexe, nebudem podrobne vysvetľovať, ale ak nastolíte dôležitú časť, bude to nasledovné.
SpeechConfig
Konfigurácia hlasových služieb vAudioConfig
Nastavenie hlasových údajov vSpeechRecognizer
Vygenerovať triedu spracovania v- Údaje o reči sa analyzujú jeden po druhom a dokončený text
SpeechRecognizer.Recognized
sa z času na čas odovzdáva v udalosti. - Ak je spracovanie z nejakého dôvodu dokončené,
SpeechRecognizer.Canceled
nazýva sa udalosť - Začiatok spracovania sa
SpeechRecognizer.StartContinuousRecognitionAsync
nazýva metóda a dokončenie spracovania saSpeechRecognizer.StopContinuousRecognitionAsync
nazýva metóda.
Kontrola prevádzky
Po vytvorení programu ho spustite, zadajte potrebné položky a stlačte tlačidlo spustiť. Ak ste zadali správny zvukový súbor, zvuk by sa mal prehrať a text by sa mal extrahovať jeden po druhom pomocou hlasovej služby Microsoft Azure v zákulisí.
Systém extrakcie nie je dokonalý, pretože závisí od hlasovej služby Microsoft Azure, Ak je hlas tichý a hovorí jasne, myslím si, že bude extrahovaný so značnou presnosťou. Keďže ide o cloudovú službu, aj keď presnosť teraz nie je taká vysoká, môže sa zlepšovať skôr, ako si to uvedomíte, takže je ľahké v tejto oblasti nič nerobiť.