۱. مرور کلی

API تبدیل متن به گفتار به توسعهدهندگان امکان میدهد گفتاری شبیه به گفتار انسان تولید کنند. این API متن را به فرمتهای صوتی مانند WAV، MP3 یا Ogg Opus تبدیل میکند. همچنین از ورودیهای زبان نشانهگذاری سنتز گفتار (SSML) برای تعیین مکثها، اعداد، قالببندی تاریخ و زمان و سایر دستورالعملهای تلفظ پشتیبانی میکند.
در این آموزش، شما بر روی استفاده از API تبدیل متن به گفتار با پایتون تمرکز خواهید کرد.
آنچه یاد خواهید گرفت
- چگونه محیط خود را تنظیم کنید
- نحوه لیست کردن زبانهای پشتیبانی شده
- نحوه فهرست کردن صداهای موجود
- نحوه ترکیب صدا از متن
آنچه نیاز دارید
نظرسنجی
چگونه از این آموزش استفاده خواهید کرد؟
تجربه خود را با پایتون چگونه ارزیابی میکنید؟
تجربه خود را با خدمات ابری گوگل چگونه ارزیابی میکنید؟
۲. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



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

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

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

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز است. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و در فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش میدهد. بخش عمدهای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را میتوان با یک مرورگر انجام داد.
پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شدهاید و پروژه روی شناسه پروژه شما تنظیم شده است.
- برای تأیید احراز هویت، دستور زیر را در 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`
- دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project
خروجی دستور
[core] project = <PROJECT_ID>
اگر اینطور نیست، میتوانید با این دستور آن را تنظیم کنید:
gcloud config set project <PROJECT_ID>
خروجی دستور
Updated property [core/project].
۳. تنظیمات محیطی
قبل از اینکه بتوانید از API تبدیل متن به گفتار استفاده کنید، دستور زیر را در Cloud Shell اجرا کنید تا API فعال شود:
gcloud services enable texttospeech.googleapis.com
شما باید چیزی شبیه به این را ببینید:
Operation "operations/..." finished successfully.
حالا میتوانید از API تبدیل متن به گفتار استفاده کنید!
به دایرکتوری خانگی خود بروید:
cd ~
یک محیط مجازی پایتون برای جداسازی وابستگیها ایجاد کنید:
virtualenv venv-texttospeech
فعال کردن محیط مجازی:
source venv-texttospeech/bin/activate
IPython و کتابخانه کلاینت Text-to-Speech API را نصب کنید:
pip install ipython google-cloud-texttospeech
شما باید چیزی شبیه به این را ببینید:
... Installing collected packages: ..., ipython, google-cloud-texttospeech Successfully installed ... google-cloud-texttospeech-2.16.3 ...
اکنون، شما آماده استفاده از کتابخانه کلاینت API تبدیل متن به گفتار هستید!
در مراحل بعدی، از یک مفسر تعاملی پایتون به نام IPython که در مرحله قبل نصب کردهاید، استفاده خواهید کرد. با اجرای ipython در Cloud Shell، یک جلسه را شروع کنید:
ipython
شما باید چیزی شبیه به این را ببینید:
Python 3.9.2 (default, Feb 28 2021, 17:03:44) Type 'copyright', 'credits' or 'license' for more information IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help. In [1]:
شما آمادهاید تا اولین درخواست خود را ارسال کنید و زبانهای پشتیبانیشده را فهرست کنید...
۴. فهرست زبانهای پشتیبانیشده
در این بخش، لیست تمام زبانهای پشتیبانیشده را مشاهده خواهید کرد.
کد زیر را در جلسه IPython خود کپی کنید:
from typing import Sequence
import google.cloud.texttospeech as tts
def unique_languages_from_voices(voices: Sequence[tts.Voice]):
language_set = set()
for voice in voices:
for language_code in voice.language_codes:
language_set.add(language_code)
return language_set
def list_languages():
client = tts.TextToSpeechClient()
response = client.list_voices()
languages = unique_languages_from_voices(response.voices)
print(f" Languages: {len(languages)} ".center(60, "-"))
for i, language in enumerate(sorted(languages)):
print(f"{language:>10}", end="\n" if i % 5 == 4 else "")
لحظهای وقت بگذارید و کد را مطالعه کنید و ببینید که چگونه از متد کتابخانه کلاینت list_voices برای ساخت لیست زبانهای پشتیبانیشده استفاده میکند.
تابع را فراخوانی کنید:
list_languages()
شما باید لیست زیر (یا لیست بزرگتری) را دریافت کنید:
---------------------- Languages: 58 -----------------------
af-ZA am-ET ar-XA bg-BG bn-IN
ca-ES cmn-CN cmn-TW cs-CZ da-DK
de-DE el-GR en-AU en-GB en-IN
en-US es-ES es-US eu-ES fi-FI
fil-PH fr-CA fr-FR gl-ES gu-IN
he-IL hi-IN hu-HU id-ID is-IS
it-IT ja-JP kn-IN ko-KR lt-LT
lv-LV ml-IN mr-IN ms-MY nb-NO
nl-BE nl-NL pa-IN pl-PL pt-BR
pt-PT ro-RO ru-RU sk-SK sr-RS
sv-SE ta-IN te-IN th-TH tr-TR
uk-UA vi-VN yue-HK
این فهرست ۵۸ زبان و گونه از آنها را نشان میدهد، مانند:
- ماندارین چینی و تایوانی،
- انگلیسی استرالیایی، بریتانیایی، هندی و آمریکایی،
- فرانسوی از کانادا و فرانسه،
- پرتغالیهایی از برزیل و پرتغال.
این فهرست ثابت نیست و با ورود صداهای جدید، گسترش مییابد.
خلاصه
این مرحله به شما امکان میدهد زبانهای پشتیبانیشده را فهرست کنید.
۵. فهرست کردن صداهای موجود
در این بخش، فهرست صداهای موجود به زبانهای مختلف را دریافت خواهید کرد.
کد زیر را در جلسه IPython خود کپی کنید:
import google.cloud.texttospeech as tts
def list_voices(language_code=None):
client = tts.TextToSpeechClient()
response = client.list_voices(language_code=language_code)
voices = sorted(response.voices, key=lambda voice: voice.name)
print(f" Voices: {len(voices)} ".center(60, "-"))
for voice in voices:
languages = ", ".join(voice.language_codes)
name = voice.name
gender = tts.SsmlVoiceGender(voice.ssml_gender).name
rate = voice.natural_sample_rate_hertz
print(f"{languages:<8} | {name:<24} | {gender:<8} | {rate:,} Hz")
لحظهای وقت بگذارید و کد را مطالعه کنید و ببینید که چگونه از متد list_voices(language_code) در کتابخانهی کلاینت برای فهرست کردن صداهای موجود برای یک زبان مشخص استفاده میکند.
حالا، لیست صداهای آلمانی موجود را دریافت کنید:
list_voices("de")
شما باید چیزی شبیه به این را ببینید:
------------------------ Voices: 20 ------------------------ de-DE | de-DE-Neural2-A | FEMALE | 24,000 Hz de-DE | de-DE-Neural2-B | MALE | 24,000 Hz ... de-DE | de-DE-Standard-A | FEMALE | 24,000 Hz de-DE | de-DE-Standard-B | MALE | 24,000 Hz ... de-DE | de-DE-Studio-B | MALE | 24,000 Hz de-DE | de-DE-Studio-C | FEMALE | 24,000 Hz de-DE | de-DE-Wavenet-A | FEMALE | 24,000 Hz de-DE | de-DE-Wavenet-B | MALE | 24,000 Hz ...
چندین صدای زن و مرد، و همچنین صداهای استاندارد، WaveNet، Neural2 و Studio در دسترس هستند:
- صداهای استاندارد توسط الگوریتمهای پردازش سیگنال تولید میشوند.
- صداهای WaveNet، Neural2 و Studio صداهای با کیفیت بالاتری هستند که توسط مدلهای یادگیری ماشینی سنتز شده و طبیعیتر به نظر میرسند.
حالا، لیست صداهای انگلیسی موجود را دریافت کنید:
list_voices("en")
شما باید چیزی شبیه به این دریافت کنید:
------------------------ Voices: 90 ------------------------ en-AU | en-AU-Neural2-A | FEMALE | 24,000 Hz ... en-AU | en-AU-Wavenet-A | FEMALE | 24,000 Hz ... en-GB | en-GB-Neural2-A | FEMALE | 24,000 Hz ... en-GB | en-GB-Wavenet-A | FEMALE | 24,000 Hz ... en-IN | en-IN-Standard-A | FEMALE | 24,000 Hz ... en-IN | en-IN-Wavenet-A | FEMALE | 24,000 Hz ... en-US | en-US-Neural2-A | MALE | 24,000 Hz ... en-US | en-US-News-K | FEMALE | 24,000 Hz ... en-US | en-US-Standard-A | MALE | 24,000 Hz ... en-US | en-US-Studio-M | MALE | 24,000 Hz ... en-US | en-US-Wavenet-A | MALE | 24,000 Hz ...
علاوه بر انتخاب صداهای متعدد با جنسیتها و کیفیتهای مختلف، لهجههای متعددی نیز در دسترس است: انگلیسی استرالیایی، بریتانیایی، هندی و آمریکایی.
لحظهای وقت بگذارید و صداهای موجود برای زبانها و گونههای مورد نظر خود (یا حتی همه آنها) را فهرست کنید:
list_voices("fr")
list_voices("pt")
list_voices()
خلاصه
این مرحله به شما امکان داد تا صداهای موجود را فهرست کنید. میتوانید درباره صداها و زبانهای پشتیبانیشده بیشتر بخوانید.
۶. ترکیب صدا از متن
شما میتوانید از API تبدیل متن به گفتار برای تبدیل یک رشته به دادههای صوتی استفاده کنید. میتوانید خروجی سنتز گفتار را به روشهای مختلفی پیکربندی کنید، از جمله انتخاب یک صدای منحصر به فرد یا تنظیم خروجی در زیر و بمی، بلندی صدا، سرعت صحبت کردن و سرعت نمونهبرداری .
کد زیر را در جلسه IPython خود کپی کنید:
import google.cloud.texttospeech as tts
def text_to_wav(voice_name: str, text: str):
language_code = "-".join(voice_name.split("-")[:2])
text_input = tts.SynthesisInput(text=text)
voice_params = tts.VoiceSelectionParams(
language_code=language_code, name=voice_name
)
audio_config = tts.AudioConfig(audio_encoding=tts.AudioEncoding.LINEAR16)
client = tts.TextToSpeechClient()
response = client.synthesize_speech(
input=text_input,
voice=voice_params,
audio_config=audio_config,
)
filename = f"{voice_name}.wav"
with open(filename, "wb") as out:
out.write(response.audio_content)
print(f'Generated speech saved to "{filename}"')
کمی وقت بگذارید و کد را مطالعه کنید و ببینید که چگونه از متد کتابخانه کلاینت synthesize_speech برای تولید دادههای صوتی و ذخیره آن به عنوان یک فایل wav استفاده میکند.
حالا، جملاتی با چند لهجهی مختلف بسازید:
text_to_wav("en-AU-Neural2-A", "What is the temperature in Sydney?")
text_to_wav("en-GB-Neural2-B", "What is the temperature in London?")
text_to_wav("en-IN-Wavenet-C", "What is the temperature in Delhi?")
text_to_wav("en-US-Studio-O", "What is the temperature in New York?")
text_to_wav("fr-FR-Neural2-A", "Quelle est la température à Paris ?")
text_to_wav("fr-CA-Neural2-B", "Quelle est la température à Montréal ?")
شما باید چیزی شبیه به این را ببینید:
Generated speech saved to "en-AU-Neural2-A.wav" Generated speech saved to "en-GB-Neural2-B.wav" Generated speech saved to "en-IN-Wavenet-C.wav" Generated speech saved to "en-US-Studio-O.wav" Generated speech saved to "fr-FR-Neural2-A.wav" Generated speech saved to "fr-CA-Neural2-B.wav"
برای دانلود همه فایلهای تولید شده به طور همزمان، میتوانید از این دستور Cloud Shell در محیط پایتون خود استفاده کنید:
!cloudshell download *.wav
اعتبارسنجی کنید و مرورگر شما فایلها را دانلود خواهد کرد:


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

شما یاد گرفتید که چگونه از API تبدیل متن به گفتار با استفاده از پایتون برای تولید گفتار شبیه به انسان استفاده کنید!
تمیز کردن
برای پاکسازی محیط توسعه خود، از Cloud Shell:
- اگر هنوز در جلسه IPython خود هستید، به پوسته برگردید:
exit - استفاده از محیط مجازی پایتون را متوقف کنید:
deactivate - پوشه محیط مجازی خود را حذف کنید:
cd ~ ; rm -rf ./venv-texttospeech
برای حذف پروژه Google Cloud خود، از Cloud Shell:
- شناسه پروژه فعلی خود را بازیابی کنید:
PROJECT_ID=$(gcloud config get-value core/project) - مطمئن شوید که این پروژهای است که میخواهید حذف کنید:
echo $PROJECT_ID - حذف پروژه:
gcloud projects delete $PROJECT_ID
بیشتر بدانید
- نسخه آزمایشی را در مرورگر خود آزمایش کنید: https://cloud.google.com/text-to-speech
- مستندات تبدیل متن به گفتار: https://cloud.google.com/text-to-speech/docs
- پایتون در گوگل کلود: https://cloud.google.com/python
- کتابخانههای کلاینت ابری برای پایتون: https://github.com/googleapis/google-cloud-python
مجوز
این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.