استفاده از Speech-to-Text API با سی شارپ

1. بررسی اجمالی

Google Cloud Speech-to-Text API به توسعه دهندگان این امکان را می دهد تا با استفاده از مدل های شبکه عصبی قدرتمند در یک API آسان، صدا را به متن در 120 زبان و نوع تبدیل کنند.

در این کد لبه، شما بر روی استفاده از Speech-to-Text API با سی شارپ تمرکز خواهید کرد. شما یاد خواهید گرفت که چگونه یک فایل صوتی را به زبان انگلیسی و سایر زبان ها برای رونویسی به Cloud Speech-to-Text API ارسال کنید.

چیزی که یاد خواهید گرفت

  • نحوه استفاده از Cloud Shell
  • نحوه فعال کردن Speech-to-Text API
  • نحوه احراز هویت درخواست های API
  • نحوه نصب کتابخانه سرویس گیرنده Google Cloud برای C#
  • چگونه فایل های صوتی را به زبان انگلیسی رونویسی کنیم
  • نحوه رونویسی فایل های صوتی با مُهر زمانی word
  • چگونه فایل های صوتی را به زبان های مختلف رونویسی کنیم

آنچه شما نیاز دارید

  • یک پروژه Google Cloud Platform
  • یک مرورگر، مانند کروم یا فایرفاکس
  • آشنایی با سی شارپ

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط از طریق آن را بخوانید آن را بخوانید و تمرینات را کامل کنید

به تجربه خود با سی شارپ چه امتیازی می دهید؟

تازه کار متوسط مسلط

تجربه خود را در استفاده از سرویس‌های پلتفرم ابری Google چگونه ارزیابی می‌کنید؟

تازه کار متوسط مسلط

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

Cloud Shell را فعال کنید

  1. از Cloud Console، روی Activate Cloud Shell کلیک کنید d1264ca30785e435.png .

cb81e7c8e34bc8d.png

اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید.

d95252b003979716.png

تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.

7833d5e1c5d18f54.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه می‌کند و در Google Cloud اجرا می‌شود، که عملکرد و احراز هویت شبکه را بسیار افزایش می‌دهد. بسیاری از کارهای شما، اگر نه همه، در این کد لبه با مرورگر قابل انجام است.

پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شده اید و پروژه به ID پروژه شما تنظیم شده است.

  1. برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list

خروجی فرمان

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project

خروجی فرمان

[core]
project = <PROJECT_ID>

اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:

gcloud config set project <PROJECT_ID>

خروجی فرمان

Updated property [core/project].

3. Speech-to-Text API را فعال کنید

قبل از شروع استفاده از Speech-to-Text API، باید API را فعال کنید. می توانید API را با استفاده از دستور زیر در Cloud Shell فعال کنید:

gcloud services enable speech.googleapis.com

4. کتابخانه سرویس گیرنده Google Cloud Speech-to-Text API را برای C# نصب کنید

ابتدا یک برنامه کنسول C# ساده ایجاد کنید که از آن برای اجرای نمونه های Speech-to-Text API استفاده کنید:

dotnet new console -n SpeechToTextApiDemo

باید برنامه ایجاد شده و رفع وابستگی ها را ببینید:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

سپس به پوشه SpeechToTextApiDemo بروید:

cd SpeechToTextApiDemo/

و بسته Google.Cloud.Speech.V1 NuGet را به پروژه اضافه کنید:

dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.

اکنون، شما آماده استفاده از Speech-to-Text API هستید!

5. رونویسی فایل های صوتی

در این قسمت فایل صوتی از پیش ضبط شده را به زبان انگلیسی رونویسی می کنید. فایل صوتی در Google Cloud Storage موجود است.

برای رونویسی یک فایل صوتی، ویرایشگر کد را از سمت راست بالای Cloud Shell باز کنید:

fd3fc1303e63572.png

به فایل Program.cs داخل پوشه SpeechToTextApiDemo بروید و کد زیر را جایگزین کنید:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");         
            
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

یک یا دو دقیقه وقت بگذارید و کد را مطالعه کنید و ببینید که برای رونویسی یک فایل صوتی استفاده می شود*.*

پارامتر Encoding به API می گوید که از کدام نوع رمزگذاری صوتی برای فایل صوتی استفاده می کنید. Flac نوع رمزگذاری برای فایل‌های خام است (برای جزئیات بیشتر به سند نوع کدگذاری مراجعه کنید).

در شی RecognitionAudio ، می توانید API را یا uri فایل صوتی ما در Cloud Storage یا مسیر فایل محلی فایل صوتی را منتقل کنید. در اینجا، ما از یک Cloud Storage uri استفاده می کنیم.

به Cloud Shell برگردید، برنامه را اجرا کنید:

dotnet run

شما باید خروجی زیر را ببینید:

how old is the Brooklyn Bridge

خلاصه

در این مرحله توانستید یک فایل صوتی را به زبان انگلیسی رونویسی کرده و نتیجه را چاپ کنید. درباره رونویسی بیشتر بخوانید.

6. رونویسی با مهر زمان کلمه

گفتار به متن می‌تواند فاصله زمانی (مهر زمانی) را برای صدای رونویسی شده تشخیص دهد. فاصله زمانی شروع و پایان هر کلمه گفتاری را در صوتی ارائه شده نشان می دهد. مقدار افست زمان نشان دهنده مدت زمانی است که از ابتدای صدا سپری شده است، با افزایش 100 میلی ثانیه.

برای رونویسی یک فایل صوتی با فاصله زمانی، به فایل Program.cs در داخل پوشه SpeechToTextApiDemo بروید و کد را با کد زیر جایگزین کنید:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates,
                EnableWordTimeOffsets = true
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
     
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine($"Transcript: { alternative.Transcript}");
                    Console.WriteLine("Word details:");
                    Console.WriteLine($" Word count:{alternative.Words.Count}");
                    foreach (var item in alternative.Words)
                    {
                        Console.WriteLine($"  {item.Word}");
                        Console.WriteLine($"    WordStartTime: {item.StartTime}");
                        Console.WriteLine($"    WordEndTime: {item.EndTime}");
                    }
                }
            }
        }
    }
}

یک یا دو دقیقه وقت بگذارید و کد را مطالعه کنید و ببینید که برای رونویسی یک فایل صوتی با مهرهای زمانی word* استفاده می‌شود*.* پارامتر EnableWordTimeOffsets به API می‌گوید تغییر زمان را فعال کند (برای جزئیات بیشتر به سند مراجعه کنید).

به Cloud Shell برگردید، برنامه را اجرا کنید:

dotnet run

شما باید خروجی زیر را ببینید:

dotnet run

Transcript: how old is the Brooklyn Bridge
Word details:
 Word count:6
  how
    WordStartTime: "0s"
    WordEndTime: "0.300s"
  old
    WordStartTime: "0.300s"
    WordEndTime: "0.600s"
  is
    WordStartTime: "0.600s"
    WordEndTime: "0.800s"
  the
    WordStartTime: "0.800s"
    WordEndTime: "0.900s"
  Brooklyn
    WordStartTime: "0.900s"
    WordEndTime: "1.100s"
  Bridge
    WordStartTime: "1.100s"
    WordEndTime: "1.500s"

خلاصه

در این مرحله توانستید یک فایل صوتی را به زبان انگلیسی با مُهر زمان word رونویسی کنید و نتیجه را چاپ کنید. درباره رونویسی با جابجایی کلمات بیشتر بخوانید.

7. رونویسی زبان های مختلف

Speech-to-Text API از رونویسی به بیش از 100 زبان پشتیبانی می کند! می‌توانید فهرستی از زبان‌های پشتیبانی‌شده را در اینجا پیدا کنید.

در این قسمت فایل صوتی از پیش ضبط شده را به زبان فرانسه رونویسی می کنید. فایل صوتی در Google Cloud Storage موجود است.

برای رونویسی فایل صوتی فرانسوی، به فایل Program.cs داخل پوشه SpeechToTextApiDemo بروید و کد زیر را جایگزین کنید:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                LanguageCode = LanguageCodes.French.France
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");

            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

یک یا دو دقیقه وقت بگذارید و کد را مطالعه کنید و ببینید که چگونه برای رونویسی یک فایل صوتی استفاده می شود*.* پارامتر LanguageCode به API می گوید که صدای ضبط شده به چه زبانی است.

به Cloud Shell برگردید، برنامه را اجرا کنید:

dotnet run

شما باید خروجی زیر را ببینید:

maître corbeau sur un arbre perché tenait en son bec un fromage

این جمله از یک داستان محبوب کودکان فرانسوی است.

خلاصه

در این مرحله توانستید یک فایل صوتی را به زبان فرانسه رونویسی کنید و نتیجه را چاپ کنید. درباره زبان های پشتیبانی شده بیشتر بخوانید.

8. تبریک می گویم!

شما یاد گرفتید که چگونه با استفاده از سی شارپ از Speech-to-Text API برای انجام انواع رونویسی روی فایل های صوتی استفاده کنید!

پاک کن

برای جلوگیری از تحمیل هزینه به حساب Google Cloud Platform برای منابع استفاده شده در این شروع سریع:

  • به کنسول Cloud Platform بروید.
  • پروژه‌ای را که می‌خواهید تعطیل کنید انتخاب کنید، سپس روی «حذف» در بالا کلیک کنید: با این کار، پروژه برای حذف برنامه‌ریزی می‌شود.

بیشتر بدانید

مجوز

این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.