استفاده از Text-to-Speech API با C#

۱. مرور کلی

رابط برنامه‌نویسی کاربردی متن به گفتار گوگل کلود (بتا) به توسعه‌دهندگان اجازه می‌دهد تا گفتار مصنوعی و طبیعی انسان را به عنوان صدای قابل پخش در برنامه‌های خود بگنجانند. این رابط برنامه‌نویسی کاربردی متن به گفتار، متن یا ورودی زبان نشانه‌گذاری سنتز گفتار (SSML) را به داده‌های صوتی مانند MP3 یا LINEAR16 (رمزگذاری مورد استفاده در فایل‌های WAV) تبدیل می‌کند.

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

آنچه یاد خواهید گرفت

  • نحوه استفاده از پوسته ابری
  • نحوه فعال کردن API تبدیل متن به گفتار
  • نحوه احراز هویت درخواست‌های API
  • نحوه نصب کتابخانه کلاینت گوگل کلود برای سی شارپ
  • نحوه فهرست کردن صداهای موجود
  • نحوه ترکیب صدا از متن

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

  • یک پروژه پلتفرم ابری گوگل
  • یک مرورگر، مانند کروم یا فایرفاکس
  • آشنایی با استفاده از سی شارپ

نظرسنجی

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

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

تجربه خود را با C# چگونه ارزیابی می‌کنید؟

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

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

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

۲. تنظیمات و الزامات

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

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

۲۹۵۰۰۴۸۲۱bab6a87.png

37d264871000675d.png

۹۶d86d3d5655cdbe.png

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

شروع پوسته ابری

اگرچه می‌توان از راه دور و از طریق لپ‌تاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید d1264ca30785e435.png .

cb81e7c8e34bc8d.png

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

d95252b003979716.png

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

7833d5e1c5d18f54.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز است. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش می‌دهد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان با یک مرورگر انجام داد.

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

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

۳. فعال کردن API تبدیل متن به گفتار

قبل از اینکه بتوانید از API تبدیل متن به گفتار استفاده کنید، باید آن را فعال کنید. می‌توانید با استفاده از دستور زیر در Cloud Shell، API را فعال کنید:

gcloud services enable texttospeech.googleapis.com

۴. کتابخانه کلاینت API تبدیل متن به گفتار گوگل کلود را برای سی شارپ نصب کنید.

ابتدا، یک برنامه کنسول ساده C# ایجاد کنید که برای اجرای نمونه‌های API تبدیل متن به گفتار از آن استفاده خواهید کرد:

dotnet new console -n TextToSpeechApiDemo

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

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

سپس، به پوشه TextToSpeechApiDemo بروید:

cd TextToSpeechApiDemo/

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

dotnet add package Google.Cloud.TextToSpeech.V1
info : Adding PackageReference for package 'Google.Cloud.TextToSpeech.V1' into project '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.
log  : Restoring packages for /home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.TextToSpeech.V1' version '1.0.0-beta01' added to file '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.

حالا، شما آماده استفاده از API تبدیل متن به گفتار هستید!

۵. فهرست کردن صداهای موجود

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

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

fd3fc1303e63572.png

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

using Google.Cloud.TextToSpeech.V1;
using System;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();
            var response = client.ListVoices("en");
            foreach (var voice in response.Voices)
            {
                Console.WriteLine($"{voice.Name} ({voice.SsmlGender}); Language codes: {string.Join(", ", voice.LanguageCodes)}");
            }
        }
    }
}

یک یا دو دقیقه وقت بگذارید و کد را مطالعه کنید*.* به Cloud Shell برگردید و برنامه را اجرا کنید:

dotnet run

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

en-US-Wavenet-D (Male); Language codes: en-US
en-AU-Wavenet-A (Female); Language codes: en-AU
en-AU-Wavenet-B (Male); Language codes: en-AU
en-AU-Wavenet-C (Female); Language codes: en-AU
en-AU-Wavenet-D (Male); Language codes: en-AU
en-GB-Wavenet-A (Female); Language codes: en-GB
en-GB-Wavenet-B (Male); Language codes: en-GB
en-GB-Wavenet-C (Female); Language codes: en-GB
...
en-GB-Standard-A (Female); Language codes: en-GB
en-GB-Standard-B (Male); Language codes: en-GB
en-AU-Standard-D (Male); Language codes: en-AU

خلاصه

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

۶. ترکیب صدا از متن

شما می‌توانید از API تبدیل متن به گفتار برای تبدیل یک رشته به داده‌های صوتی استفاده کنید. می‌توانید خروجی سنتز گفتار را به روش‌های مختلفی پیکربندی کنید، از جمله انتخاب یک صدای منحصر به فرد یا تنظیم خروجی در گام، حجم صدا، سرعت گفتار و سرعت نمونه‌برداری .

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

using Google.Cloud.TextToSpeech.V1;
using System;
using System.IO;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();

            // The input to be synthesized, can be provided as text or SSML.
            var input = new SynthesisInput
            {
                Text = "This is a demonstration of the Google Cloud Text-to-Speech API"
            };

            // Build the voice request.
            var voiceSelection = new VoiceSelectionParams
            {
                LanguageCode = "en-US",
                SsmlGender = SsmlVoiceGender.Female
            };

            // Specify the type of audio file.
            var audioConfig = new AudioConfig
            {
                AudioEncoding = AudioEncoding.Mp3
            };

            // Perform the text-to-speech request.
            var response = client.SynthesizeSpeech(input, voiceSelection, audioConfig);
            
            // Write the response to the output file.
            using (var output = File.Create("output.mp3"))
            {
                response.AudioContent.WriteTo(output);
            }
            Console.WriteLine("Audio content written to file \"output.mp3\"");
        }
    }
}

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

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

dotnet run

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

Audio content written to file "output.mp3"

در داخل ویرایشگر کد، می‌توانید فایل mp3 را دانلود کرده و آن را به صورت محلی در دستگاه خود پخش کنید.

a4b9578505422dad.png

خلاصه

در این مرحله، شما توانستید از API تبدیل متن به گفتار برای تبدیل یک رشته به یک فایل صوتی mp3 استفاده کنید. درباره ایجاد فایل‌های صوتی صوتی بیشتر بخوانید.

۷. تبریک می‌گویم!

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

تمیز کردن

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

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

اطلاعات بیشتر

مجوز

این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.