espeak - تبدیل فایل متنی به فایل صوتی( تقویت زبان انگلیسی)

espeak - نرم افزاری است  که توانایی تبدیل فایل  متنی به فایل صوتی را با فرمت صوتی Wav دارا می باشد و شما برای استفاده از این نرم افزار قدرتمند و مفید در خط فرمان می توانید به کمک دستور espeak در خط فرمان از ان استفاده کنید که در اینجا با این نرم افزار قدرتمند آشنا می شویم.

شکل کلی دستور:

$ espeak [options] ['words']

 نکته:espeak یک نرم افزار چند زبانه است که فقط منحصر به زبان انگلیسی نیست.

برای نصب کافی است از خط فرمان دستور زیر را اجرا کنیم:

$  sudo apt-get install espeak

شکل کلی دستور مورد نظر به صورت زیر می باشد:

$ espeak [options] ['words']

در ساده ترین حالت کاربر با نوشتن کلمه یا جمله خود در '  ' در جلوی دستور espeak و فشار دکمه اینتر  قادر به اجرای دستور می باشید به عنوان مثال:

$ espeak 'words to speak'

نکته:در صورتی که از '   ' استفاده نکنیم فقط کلمه اول از جمله خوانده می شود نه تمام جمله.

اگر دقیق تر به دستور espeak نگاه کنیم در واقع دستور فوق در اصل به صورت زیر اجرا می شود (دقت کنید هر 2 دستور یکسان هستند)

$ espeak --stdout 'words to speak' | aplay

که در اصل هر 2 مثال ذکر شده در بالا به نکته زیر اشاره می کنن:

Playing WAVE ‘stdin’ : Signed 16 bit Little Endian, Rate 22050 Hz, Mono

این خط حاوی اطلاعاتی در مورد فرکانس صداست.

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

نکته:دستور espeack برای تولید صدا برای یک کلمه خاص آن کلمه را از طریق آپشن stdin--   از stdin  (بخوانید standard input)  دریافت میکند و  از طریق آپشن  stdout--تولید صدا را انجام میدهد.

نکته:آپشن stdout--گزینه اختیاری است و همیشه اجرا می شود پس نیازی به نوشتن آن نیست.

نکته:در هنگام استفاده از آپشن stdout--در خط فرمان حتما باید در ادامه از  aplay |   باید استفاده کنیم.

نکته:دستور aplay |  از 2 بخش تشکیل شده:

بخش اول عمگلر پایپ لاین یا  | می باشد (اطلاعات بیشتر در پایین)  و بخش دوم تابع aplayمی باشد که یک برنامه پخش صدای خط فرمانی می باشد.

پس با توجه به توضیحات فوق دستور بالا را دوباره بررسی می کنیم تا با کارکرد دستور espeack اشنا شویم:

$ espeak --stdout 'words to speak' | aplay

مطابق نکات فوق:

دستور espeak جمله words to speak را از طریق آپشن stdin--می خواند و از طریق آپشن  stdout--تولید صدا را انجام میدهد و با عمگلر پایپ لاین یا  | صدای تولید شده را  به تابع aplay می فرستد و این پخش کنند خط فرمانی آن را پخش می کند.

پارامتر ها :

f-:برای خواندن یک فایل متنی.

نکته:پس از به کاربردن پارامتر f-باید مسیر فایل نیز نوشته شود.

<a <integer-:تعیین دامنه صدا (درشتی-بزرگی) از صفر تا 200،بصورت پیش فرض 100 می باشد.

<p <integer-:تنظیم گام صدا (زیر و بمی صدا) از صفر تا 99 ،بصورت پیش فرض 50 می باشد.

<s <integer-:یکی از مهمترین آپشن هاست که سرعت بیان را با واحد" تعداد کلمه در دقیقه-wpm"  تنظیم میکند که مقدار پیش فرض 160 کلمه در هر دقیقه می باشد.ممکن است شما بر اساس تجربه و نیاز علاقمند باشید که از مقادیر دیگری استفاده کنید.

نکته:سرعت محدود به 80 تا 450 کلمه در دقیقه است.

نکته:مقادیر بیشتر از حد مجاز هم به مقادر ماکزیممم(حد بالا) محدود می شود.

<b <integer-:فرمت کارکترهای متن ورودی را تعیین میکند  بصورت پیش فرض از UTF-8 استفاده می شود.

<g <integer-:ایجاد یک فضای خالی بین هر کلمه تا کلمه بعد،این عدد اندازه فاصله خواهد بود

نکته:برای حالت پیش فرض ( تعداد 160 کلمه در دقیقه) برای هر واحد 10 میلی ثانیه خواهد بود.

<k <integer-:نشان دادن کلماتی است  که با حرف بزرگ شروع می شوند .

<l <integer-:برای تعیین طول یک خط جمله به کار میرود و مقدار پیش فرض صفر است.

h-:نمایش نسخه دستور

m-:این پارامتر در جاهای خاص مثل متونی که حاوی SSML هستند کاربرد دارد.

نکته:اگر پارامتر m-به کار رود توانایی خواندن فایل های HMTL رو بطور مستقیم دارد البته اگر حاوی تگ های خاص باشد.

q-:مد بی صدا.

نکته:این حالت خروجی صدا نداریم و  وقتی با پارامتر  –x به کار برود مفید است.

voices-- :نمایش زبان های موجود ،که برای بیان جملات می توانیم از لهجه موردنظر استفاده کنیم.

dotnet@dotnet-V:~$ espeak --voices

لیست محدودی از زبان های موجود به صورت زیر است و در ادامه برای مثال ها ممکن است به انها نیاز پیدا کنیم:

Pty Language Age/Gender VoiceName File       Other Langs
 :لیست زبان ها

 

5 af M afrikaans af  
5 bg M bulgarian-test bg  
5 bs M bosnian bs  
5 ca M catalan ca  
5 cs M czech cs  
5 cy M welsh-test cy  
5 da M danish da  
5 de M german de  
5 el M greek el  
5 en M default default  

5

 en-sc M en-scottish  en/en-sc  

نکته:زبان برای بیان متن ، بصورت پیش فرض انگلیسی است

v-:جهت استفاده از زبان های فوق از این پارامتر استفاده می شود.نحوه صحیح از زبان های فوق از طریق فرمت زیر صورت میگیرد:

-v <voice filename>[+<variant>]

-v<تن صدا+><زبان> 

دقت شود ابتدا v-  سپس بلافاصله نوع زبان انتخاب میشود سپس به کمک variant زیر و بم صدا(تن صدا) انتخاب میشود. 

برای درک بهتر قالب فوق چند مثال بیان می کنیم:

vaf-:متن با زبان (Afrikaans) بیان می شود.

vku-:متن با زبان کردی (kurdish) بیان می شود.

vaf+7-:متن با زبان (Afrikaans) و با تن صدای 7 بیان می شود.

نکته:به کمک مقدار variant می توانیم صدای گوینده مرد یا زن را برای خواندن متن مورد نظرشبیه سازی می کند.متغیر های m1+ تا m7+ برای صدای مرد و متغیرهای f1+تا f4+ برای صدای زن به کار میرود.

نکته:m بیانگر male یا مرد می باشد و f بیانگر female یا زن می باشد  و اعداد هم بیانگر محدوده مورد نظر هستند

نکته:بین پارامتر v-و پارامتر بعدی(زبان) می شود می تواند فاصله باشد،اگر به 2 فرمت بالا دقت کنید می بینید که در اولی بعد از v-فاصله است و در دومی فاصله وجود ندارد و خروجی هر 2 برابر هستند و این تفاوت تغییری ایجاد نخواهد کرد.

<w <wave file-:یکی از مهمترین و بهترین پارامتر هاست که ما میتوانیم متن را به یک فایل صوتی به فرمت WAV تبدیل کنیم و این فایل را بارها و بارها گوش کنیم.
[<split [=<minutes--:ایجاد چندین فایل صوتی ،بعد از هر مدت زمان مشخص یک فایل جدید صوتی ایجاد میکند.

در واقع به جای اینکه یک فایل صوتی با فرمت wav داشته باشیم همان فایل به چندین فایل صوتی کوچکتر با پسوند wav تقسیم می شود.

نکته:باید همراه  w-به کار برود.

whisper+:اگر دوست دارید اصطلاحا بصورت "در گوشی" یا "پچ پچ کردن" جملات را بشنوید از پارامتر استفاده کنید.

مثال:یک گوینده زن جمله Hello World را بیان می کند

espeak -v +f2 "Hello World"

مثال:یک گوینده زن جمله فرانسوی Bonjour tout le monde را بیان می کند

espeak -v fr+f2 "Bonjour tout le monde"

مثال:پس از بیان هر کلمه 10 میلی ثانیه صبر می کند و کلمه بعد را بیان می کند

espeak -g 10 "I have something to say"

مثال:جمله I have something secret to say را بصورت "در گوشی" بیان می کند.

espeak -v +whisper "I have something secret to say"

مثال:خواندن یک فایل متنی و تولید فایل صوتی با پسوند wav

espeak   -f   /home/test.txt    -s     22   -w   exam.wav

نکته:این مثال یکی از مهمترین کاربردهای این  زبان است که به کمک پارامتر f-فایل test.txt که حاومی متنی به زبان انگلیسی است را با سرعت 22 کلمه در دقیقه می خواند به یک فایل به نام exam با پسوند wav تبدیل میکند.شما به کمک این پارامتر قادرید فایل های مور نظر خود را به فایل  صوتی تبدیل کنید و بارها و بارها گوش دهید. 

مثال:تغییر سرعت خواندن از یک فایل

espeak -s 140 -f /path/mydocument.txt | aplay

فایل mydocument.txt را از مسیر مورد نظر با سرعت 140 کلمه در دقیقه می خواند.

مثال:تغییر لهجه

espeak -v en-uk --stdout 'reading tips & tricks in TGS' | aplay

در این مثال اگر چه زبان انگلیسی است ولی با لهجه دیگری بیان می شود.

مثال:خواندن یک فایل متنی

espeak --stdout -f /path/mydocument.txt | aplay

محتویات متن را از فایل متنی mydocument.txt می خواند و تنها پخش می کند.

نکته:در انتها برای دیدن لهجه های یک زبان می توانیم لهجه های موجود در ان زبان را در خط فرمان پالایش کنیم و در صورت علاقه یا نیاز از آن استفاده کنیم در اینجا زبان فرانسوی مثال زده شده است.

dotnet@dotnet-V:~$ espeak --voices=fr
Pty Language Age/Gender VoiceName       File        Other Langs
 5  fr-fr          M  french            fr          (fr 5)
 7  fr             M  french-mbrola-1   mb/mb-fr1   
 7  fr             F  french-mbrola-4   mb/mb-fr4   
 5  fr-be          M  french (Belgium)  fr-be       (fr 8)

اطلاعات بیشتر در مورد پایپ لاین: 

http://en.wikipedia.org/wiki/Pipeline_(Unix)