آڈیو فائل سے متن نکالنے کے لئے مائیکروسافٹ ایزور اسپیچ سروس کا استعمال کریں۔

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

آپریشن پڑتال ماحول

Microsoft Azure Voice Services
  • جولائی 2022 ایڈیشن
Visual Studio
  • Visual Studio 2022
.NET
  • 6.0

پیشگی شرط

اس سے پہلے کہ آپ اس بات کی تصدیق کرسکیں کہ یہ نکات کام کرتے ہیں ، آپ کو یہ کرنے کی ضرورت ہے:

نمونہ مواد کے بارے میں

ہم مندرجہ ذیل سائٹ سے آڈیو فائلیں ادھار لیتے ہیں۔ یہ نمونہ کوڈ میں شامل نہیں ہے.

بیرونی روابط

سب سے پہلے

مثال کے طور پر ، میٹنگ کے مندرجات وغیرہ کو ریکارڈ کرنے کے لئے ، گفتگو کے مندرجات کو ریکارڈ کیا جاتا ہے ، اور بعد میں میٹنگ کے منٹس بنانے کے لئے ، ریکارڈ شدہ آڈیو کو سنا جاتا ہے اور متن میں منتقل کیا جاتا ہے۔ تاہم ، یہ تصور کرنا آسان ہے کہ گفتگو کے مندرجات کو ایک جملے میں لکھنا بہت تکلیف دہ ہے۔

مائیکروسافٹ ایزور اسپیچ سروس کو خود بخود متن میں تقریر کے اعداد و شمار کو برآمد کرنے اور آؤٹ پٹ کرنے کا طریقہ یہ ہے۔ پچھلی مثال میں ، یہ میٹنگ کی ریکارڈنگ ہے ، لیکن اس تجاویز میں ، اسے آڈیو فائل سے نکالا گیا ہے ، لہذا اس کا اطلاق کسی بھی ایسی چیز پر کیا جاسکتا ہے جس میں گفتگو کے مندرجات شامل ہوں۔

نیز ، اس بار ہم متن کو نقل کرنے کے بارے میں بات کر رہے ہیں ، آپ ریکارڈنگ کے دوران تبدیل کرنے اور ترجمہ کرنے کے لئے مائیکروسافٹ ایزور صوتی خدمت بھی استعمال کرسکتے ہیں۔

فیس کے بارے میں

اس بار، ہم مفت منصوبہ استعمال کریں گے، لہذا یہاں تک کہ اگر آپ کام کرنے کی کوشش کرتے ہیں تو، آپ سے چارج نہیں کیا جائے گا. تاہم ، مفت منصوبے میں وقت اور کردار کی حدود ہیں ، لہذا اگر آپ کو اصل میں اسے چلانے کے بعد مزید تبادلوں کی ضرورت ہے تو ، براہ کرم ادا شدہ منصوبے میں تبدیل کریں۔

قیمتوں کا تعین کرنے کے لئے مندرجہ ذیل سرکاری صفحہ ملاحظہ کریں. چونکہ یہ کلاؤڈ سروس ہے ، لہذا موسم کے لحاظ سے فیس میں اتار چڑھاؤ ہوسکتا ہے۔

Microsoft Azure portal تک رسائی

ویب براؤزر میں درج ذیل یو آر ایل تک رسائی حاصل کریں:

اگر آپ پہلے ہی سائن ان کر چکے ہیں تو ، آپ کام کر چکے ہیں۔ اگر آپ پہلے ہی سائن ان نہیں ہیں تو ، درج ذیل اسکرین دکھائی جائے گی ، لہذا براہ کرم سائن ان کریں۔

جب آپ لاگ ان ہوتے ہیں تو ، درج ذیل اسکرین ظاہر ہوگی۔ آپ جس ڈیزائن کو ترتیب دے رہے ہیں اس پر منحصر ہے ، ڈسپلے مختلف ہوسکتا ہے۔

Create a voice service in Microsoft Azure

اگر آپ پورٹل کے اوپر سرچ ان پٹ فیلڈ میں "آواز" داخل کرتے ہیں تو ، "صوتی خدمت" سامنے آئے گی ، لہذا اسے منتخب کریں۔

علمی خدمات | جب "صوتی خدمت" اسکرین ظاہر ہوتی ہے تو ، "تخلیق کریں" کو منتخب کریں۔

"تقریر کی خدمات بنائیں" اسکرین کھلتی ہے ، لہذا ضروری آئٹمز درج کریں۔

بنیادی باتیں

کے ان پٹ مثال
اشیاءمشمولات کی
اشتراک وہ سبسکرپشنز منتخب کریں جن کے لئے آپ ادائیگی کرنا چاہتے ہیں۔ یہاں تک کہ اگر یہ مفت ہے تو ، آپ کو ہمیشہ اسے کسی نہ کسی طرح کی رکنیت سے باندھنے کی ضرورت ہوتی ہے۔
وسائل کے گروپ اختصاص کرتا ہے کہ صوتی خدمت کو کس ریسورس گروپ میں شامل کرنا ہے۔ اگر آپ نے ابھی تک ایک تخلیق نہیں کیا ہے تو، براہ کرم ذیل میں "نیا" سے ایک بنائیں. جب آپ مختلف خدمات تخلیق کرتے ہیں تو آپ وسائل کے گروپوں کو گروپبندی کے طور پر سوچ سکتے ہیں۔
علاقہ کسی ایسی جگہ کے قریب کا انتخاب کریں جہاں آپ اسے اکثر استعمال کرسکتے ہیں۔ تاہم ، براہ کرم نوٹ کریں کہ قیمتیں خطے کے لحاظ سے مختلف ہوسکتی ہیں۔ جاپان مشرق
نام اس صوتی خدمت کے لیے کوئی بھی نام۔ اگر آپ ایک سے زیادہ صوتی خدمت تشکیل دے رہے ہیں تو ، براہ کرم اس بات کو یقینی بنائیں کہ نام وضاحتی ہے۔ یہ نام عالمی اور انوکھا ہے ، لہذا آپ ایسا نام استعمال نہیں کرسکتے ہیں جو کہیں اور استعمال ہوتا ہے۔ SpeechToText-Test
قیمتوں کا تعین کرنے والا درج اگر آپ اسے مفت میں استعمال کرنا چاہتے ہیں تو ، "فری ایف 0" کا انتخاب کریں۔ اگر آپ اسے فیس کے لئے استعمال کرنا چاہتے ہیں تو ، براہ کرم ایک اور منصوبہ منتخب کریں۔ یقینا، اگر یہ مفت ہے تو پابندیاں ہیں. مفت F0

ایک بار داخل ہونے کے بعد ، اگلا منتخب کریں: ذیل میں نیٹ ورک >۔

نیٹ ورک

کے ان پٹ مثال
اشیاءمشمولات کی
قسم اس حد اطلاق کا اختصاص کرتا ہے جس سے یہ صوتی خدمت قابل رسائی ہے۔ اگر آپ کسی بھی تفصیلی ترتیبات کے بغیر کہیں سے بھی اس تک رسائی حاصل کرنے کے قابل ہونا چاہتے ہیں تو ، "انٹرنیٹ سمیت ..." کو منتخب کریں۔ "کہیں سے بھی رسائی حاصل کی جاسکتی ہے" کا مطلب یہ بھی ہے کہ "کوئی بھی اس تک رسائی حاصل کرسکتا ہے"، لیکن حقیقت میں صرف وہی لوگ اس تک رسائی حاصل کرسکتے ہیں جن کے پاس اس کے بعد حاصل ہونے والی "کلید" ہے ، لہذا سیکیورٹی کے لحاظ سے یہ اتنا مسئلہ نہیں ہے۔ بشمول انٹرنیٹ...

ایک بار جب آپ اس میں داخل ہوجائیں تو ، اگلا: شناخت کا > ذیل میں منتخب کریں۔

شناخت

کے ان پٹ مثال
اشیاءمشمولات کی
نظام تفویض کردہ منظم شناخت اس بار میں صوتی خدمت کو تنہا استعمال کرتا ہوں ، لہذا اسے بند کرنا اچھا ہے۔ آف
صارف کی تفویض کردہ منظم شناخت مجھے اسے شامل کرنے کی ضرورت نہیں ہے کیونکہ میں اس بار صارف نہیں بناتا ہوں۔ بغیر

ایک بار جب آپ اس میں داخل ہوجائیں تو ، اگلا: ٹیگ > نیچے منتخب کریں۔

ٹیگ

چونکہ اس بار ٹیگ استعمال نہیں کیا گیا ہے ، لہذا یہ سیٹ نہیں ہے۔

ایک بار داخل ہونے کے بعد ، اگلا منتخب کریں: جائزہ لیں اور ذیل میں > بنائیں۔

جائزہ لیں اور تخلیق کریں

اگر ان پٹ مشمولات کے ساتھ کوئی مسئلہ نہیں ہے تو ، "توثیق کامیاب" ظاہر ہوتی ہے۔ اگر کوئی مسئلہ ہے تو ، ایک غلطی کا پیغام دکھایا جائے گا ، لہذا واپس جائیں اور اسے دوبارہ سیٹ کریں۔

اگر ان پٹ مشمولات میں کوئی مسئلہ نہیں ہے تو ، "تخلیق کریں" کے بٹن پر کلک کریں۔ اس کے بعد تعیناتی شروع ہو جائے گی.

تھوڑی دیر کے بعد ، تعیناتی مکمل ہوجاتی ہے اور درج ذیل اسکرین ظاہر ہوتی ہے۔ تعیناتی کا نام لمبا ہے ، لیکن آپ کو اس کے بارے میں فکر کرنے کی ضرورت نہیں ہے کیونکہ یہ تعیناتی میں عارضی ہے۔

صوتی خدمت تخلیق ہونے کی تصدیق کرنے کے لئے آپ ریسورس پر جائیں بٹن پر کلک کرسکتے ہیں۔

چابیاں پیدا کرنا اور بازیافت کرنا

کلائنٹ سے اس صوتی خدمت تک رسائی حاصل کرنے کے لیے توثیقی کلید کی ضرورت ہے۔ چونکہ یہ صرف اس پروگرام کے ذریعہ قابل رسائی ہے جس میں یہ کلید ہے ، لہذا اس کلید کو کسی تیسرے فریق کے ذریعہ چوری ہونے سے روکنا ضروری ہے۔

یہاں "کلائنٹ" سے مراد وہ تمام پروگرام ہیں جو مائیکروسافٹ ایزور کا استعمال کرتے ہیں ، جیسے ڈیسک ٹاپ ایپس ، اسمارٹ فون ایپس ، اور ویب ایپس۔

کلید حاصل کرنے کے لئے ، اپنی تخلیق کردہ صوتی خدمت پر جائیں۔ اس تک ڈیش بورڈز ، ریسورس گروپس ، اور اسی طرح سے رسائی حاصل کی جاسکتی ہے۔

جب صوتی خدمات کا صفحہ کھلتا ہے تو ، بائیں طرف والے مینو سے چابیاں اور اختتامی نکات منتخب کریں۔

اس کے بعد ، "کلید اور اختتامی نقطہ" کا صفحہ کھل جائے گا اور آئٹمز "کلید 1"، "کلید 2"، "مقام / علاقہ" اور "اینڈ پوائنٹ" دکھائے جائیں گے۔

دونوں اشیاء ضروری ہیں ، لیکن "کلید 2" ایک اسپیئر فریم ہے ، لہذا یہ زیادہ تر معاملات میں استعمال نہیں ہوتا ہے۔

ہر قدر کا ایک نوٹ بنائیں۔ جیسا کہ تفصیل میں ذکر کیا گیا ہے، براہ کرم غیر متوقع طور پر ترقیاتی جماعتوں کے ساتھ کلید کا اشتراک نہ کریں.

اگر کلید لیک ہوجاتی ہے تو ، نئی کلید جاری کرنے کے لئے اوپر "کلید 1 کو دوبارہ تخلیق کریں" پر کلک کریں۔ یقینا ، اس بات سے آگاہ رہیں کہ اس معاملے میں ، پچھلی کلید اب قابل استعمال نہیں ہوگی۔

تقریر سے متن نکالنے کے لئے کسی پروگرام سے اسپیچ سروس کا استعمال کریں۔

اب سے ، استعمال شدہ پروگرام کے لحاظ سے صوتی خدمت کا استعمال تبدیل ہوجائے گا۔ اس بار ، میں اسے ڈاٹ نیٹ ڈیسک ٹاپ ایپلی کیشن سے حاصل کروں گا ، لیکن اگر آپ کوئی اور فریم ورک استعمال کررہے ہیں تو ، اسے انٹرنیٹ پر استعمال کرنے کی کوشش کریں۔ سرکاری ویب سائٹ پر اس بارے میں بھی ہدایات ہیں کہ اسے کئی زبانوں میں کیسے استعمال کیا جائے۔

اس بار ، ہم بصری اسٹوڈیو 2022 میں ڈبلیو پی ایف ڈیسک ٹاپ ایپ تشکیل دے رہے ہیں۔ بصری اسٹوڈیو کوڈ کے معاملے میں ، یہ تھوڑا سا تکلیف دہ ہے کیونکہ کوئی ڈیزائنر نہیں ہے ، لیکن اگر آپ صرف پروگرام کا حصہ نکالتے ہیں تو ، اسے کنسول ایپ یا ویب ایپ میں استعمال کرنا ممکن ہے۔

پروجیکٹ بنائیں

بصری اسٹوڈیو 2022 شروع کریں۔

نیا پروجیکٹ بنائیں منتخب کریں۔

ڈبلیو پی ایف ایپلی کیشن منتخب کریں۔

پروجیکٹ کا نام اور مقام صوابدیدی ہیں۔ ایک بار داخل ہونے کے بعد ، اگلا منتخب کریں۔

ورژن کو "کہا جاتا ہے۔ نیٹ 6.0". ایک بار سیٹ ہونے کے بعد ، "تخلیق کریں" کے بٹن پر کلک کریں۔

NuGet settings

آپ شروع سے ہی مائیکروسافٹ ایزور اے پی آئی تک رسائی حاصل کرسکتے ہیں ، لیکن اسے استعمال کرنا آسان ہے کیونکہ آپ کے پاس پہلے سے ہی سرکاری لائبریری ہے۔

حل کے لئے انحصار پر دائیں کلک کریں اور نیوگیٹ پیکجوں کا انتظام کریں کو منتخب کریں۔

"براؤز" ٹیب کو منتخب کریں ، سرچ ان پٹ فیلڈ میں "مائیکروسافٹ.کوگنیٹیو سروسز.اسپیچ" درج کریں ، اور ایک فہرست دکھائی جائے گی ، لہذا "مائیکروسافٹ.کوگنیٹیو سروسز.اسپیچ" کو منتخب کریں اور انسٹال بٹن پر کلک کریں۔

ٹھیک ہے بٹن پر کلک کریں۔

منتخب کریں میں اتفاق کرتا ہوں.

جب آپ کام کر لیں گے تو ، اسے پیکیج میں شامل کیا جائے گا۔

یو آئی بنانا

اس بار ، ہم آڈیو پر مشتمل ڈبلیو اے وی فائل کی وضاحت کریں گے اور گفتگو کے مندرجات کو اسپیچ اے پی آئی کے ساتھ متن میں نکالیں گے اور اسے ظاہر کریں گے۔ فی الحال ، ماحول کو ان پٹ فیلڈ پر منحصر چھوڑ دیں تاکہ آپ کوڈ کو کاپی اور پیسٹ کرکے استعمال کرسکیں۔

اسکرین کو اس طرح نظر آنا چاہئے: چونکہ صرف کم از کم رقم شامل ہے ، لہذا اگر آپ مثال کے طور پر فائل ریفرنس بٹن شامل کرنا چاہتے ہیں تو ، براہ کرم اسے خود نافذ کریں۔

MainWindow.xaml مندرجہ ذیل ہے:

<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>

ایک عمل تخلیق کرنا

ExecuteButton_Click پروگرام تمام طریقوں میں لپیٹ دیا گیا ہے. اگر آپ اسے دوسرے فریم ورک میں استعمال کرنا چاہتے ہیں تو ، اس کوڈ کو بطور بیس دوبارہ لکھیں۔

Main ونڈو.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("処理が終了しました。");
    }
  }
}

چونکہ وضاحت تقریبا کوڈ میں لکھی گئی ہے ، لہذا میں تفصیل سے وضاحت نہیں کروں گا ، لیکن اگر آپ اہم حصہ اٹھاتے ہیں تو ، یہ مندرجہ ذیل ہوگا۔

  • SpeechConfig میں صوتی خدمات تشکیل دے رہا ہے
  • AudioConfig میں صوتی کوائف مرتب کر رہا ہے
  • SpeechRecognizer میں پروسیسنگ کلاس پیدا کریں
  • تقریر کے اعداد و شمار کا ایک ایک کرکے تجزیہ کیا جاتا ہے ، اور مکمل متن SpeechRecognizer.Recognized وقتا فوقتا اس واقعے میں منتقل ہوجاتا ہے۔
  • اگر پروسیسنگ کسی وجہ سے ختم ہوگئی ہے تو ، SpeechRecognizer.Canceled ایک واقعہ کہا جاتا ہے۔
  • پروسیسنگ کے آغاز کو طریقہ کہا جاتا ہے SpeechRecognizer.StartContinuousRecognitionAsync ، اور پروسیسنگ کی تکمیل کو طریقہ کہا جاتا ہے SpeechRecognizer.StopContinuousRecognitionAsync .

آپریشن پڑتال

پروگرام بنانے کے بعد ، اس پر عمل درآمد کریں ، ضروری آئٹمز درج کریں اور عملدرآمد کا بٹن دبائیں۔ اگر آپ نے صحیح آڈیو فائل کی وضاحت کی ہے تو ، آڈیو کو چلنا چاہئے اور پردے کے پیچھے مائیکروسافٹ ایزور وائس سروس کا استعمال کرتے ہوئے متن کو ایک ایک کرکے نکالا جانا چاہئے۔

نکالنے کا نظام کامل نہیں ہے کیونکہ یہ مائیکروسافٹ ایزور صوتی خدمت پر منحصر ہے، اگر آواز خاموش ہے اور واضح طور پر بولتی ہے، تو مجھے لگتا ہے کہ یہ کافی درستگی کے ساتھ نکالا جائے گا. چونکہ یہ کلاؤڈ سروس ہے ، یہاں تک کہ اگر درستگی اب اتنی زیادہ نہیں ہے تو ، آپ کو معلوم ہونے سے پہلے ہی یہ بہتر ہوسکتی ہے ، لہذا اس علاقے میں کچھ بھی نہ کرنا آسان ہے۔