| stretch(1) | Sound Data Time Stretching | stretch(1) |
نام (NAME)
stretch - ابزار کشش زمانی برای دادههای صوتی
خلاصه دستور (SYNOPSIS)
stretch [گزینهها] [ورودی [خروجی]]
توضیحات (DESCRIPTION)
ابزار stretch به شما امکان میدهد مدتزمان یک جریان داده صوتی را بدون اثرگذاری بر زیروبمی (pitch) دادههای نمونهبرداریشده، افزایش یا کاهش دهید. این ابزار از روش وکودر فاز (phase-vocoding) برای اعمال این اثر بهره میبرد که معمولاً نتایجی بهتر از روشهای حوزه زمان به همراه دارد. دادههای صوتی ورودی میتوانند از چندین کانال تشکیل شده باشند که در این صورت خروجی نیز چندکاناله خواهد بود.
هر دو مقدار ورودی و خروجی میتوانند بهصورت «-» باشند که به ترتیب نشاندهنده خواندن دادههای سیگنال از stdin یا نوشتن در stdout است (برای دستیابی به همین اثر، میتوانید نام فایلها را نیز حذف کنید، به این ترتیب که ابتدا نام خروجی حذف میشود). در هر دو حالت، قالب نمونهها بهصورت علامتدار ۱۶ بیتی لیتل-اندین (معروف به قالب CD) است.
برای دسترسی به فایلهای فیزیکی، این ابزار از کتابخانه sndfile استفاده میکند. ابزار تلاش میکند قالب مورد نظر برای فایل خروجی را بر اساس پسوند نام فایل حدس بزند؛ علاوه بر این، میتوانید عمق بیت خروجی (کوانتیزاسیون) را با پارامتر -b (--bits) مشخص کنید.
این ابزار قادر به بازنویسی مستقیم محتویات فایل ورودی نیست.
گزینهها (OPTIONS)
سادهترین شیوه اجرای ابزار به این صورت است:
stretch -t 1.5 infile.wav outfile.wav
این مثال مدتزمان infile.wav را به ۱۵۰ ٪ افزایش میدهد و نتیجه را در outfile.wav مینویسد.
کاربردیترین گزینهها:
- -t, --times <stretch factor>
- نسبتی را تعیین میکند که مدتزمان سیگنال صوتی با آن مقیاسگذاری میشود. مقادیر بیشازحد میتوانند باعث ایجاد ناهنجاریهای صوتی در سیگنال خروجی شوند که معمولاً به صورت مدولاسیون دورهای دامنه شنیده میشوند. برای رسیدن به نسبت انبساط/فشردهسازی زمانی دقیق، حاصلضرب این مقدار و پارامتر -o (--overlap) باید یک عدد صحیح باشد.
- -a, --amplify <factor>
- ضریب تقویت خطی را برای سیگنال خروجی تعیین میکند. مقدار پیشفرض 1.0 است.
- -q, --quiet
- ابزار را بیصدا میکند تا درباره کارهایی که انجام میدهد پیامی نمایش ندهد.
گزینههای کنترل پردازش:
- -f, --fft <DFT length>
- طول DFT (تبدیل فوریه گسسته) را تعیین میکند که برای دستیابی به بهترین نتیجه باید توانی از دو باشد. مقادیر فرد ممکن است باعث توقف و بروز خطای ابزار شوند. اندازههای بزرگتر DFT به قیمت افزایش بار محاسباتی، وضوح فرکانسی بهتری فراهم میکنند. مقدار پیشفرض ۱۰۲۴ نمونه است.
- -o, --overlap <overlap>
- بازهای را که در آن بازترکیب سیگنال انجام میشود کنترل میکند. مقادیر کوچکتر به قیمت افزایش بار محاسباتی، نتیجه روانتری را به همراه دارند. مقدار پیشفرض ۱۲۸ نمونه است.
گزینههای سیگنال ورودی پایپشده:
اگر ورودی سیگنال از stdin باشد، فرض پیشفرض درباره قالب دادهها (بهجز قرارداد ۱۶ بیتی علامتدار لیتل-اندین که پیشتر ذکر شد)، صدای دو کاناله با نرخ نمونهبرداری 44.1 کیلوهرتز است. گزینههای زیر این مقادیر را بازنویسی میکنند:
- -c, --channels <channel count>
- بدون هیچ نکته غافلگیرکننده: 1 برای مونو، 2 برای استریو و غیره است.
- -r, --rate <sample rate>
- نرخ نمونهبرداری را تنظیم میکند.
عمق بیت خروجی:
- -b, --bits <quantization>
- عمق بیت خروجی را مشخص میکند (تنها برای خروجی فایل فیزیکی). ۸، ۱۶ یا ۲۴ برای اعداد صحیح علامتدار، ۳۲ یا ۶۴ برای ممیز شناور. مقدار پیشفرض ۱۶ بیت است. (دقت محاسبات داخلی بهصورت ممیز شناور ۳۲ بیتی است.)
- -l, --limit
- این گزینه باعث میشود ابزار دامنه سیگنال خروجی را برش (clip) دهد تا در محدوده کوانتیزاسیون خروجی، یا در صورت استفاده از قالب ممیز شناور، در محدوده [-1,+1] باقی بماند. استفاده از این فلگ در شرایطی که خروجی در قالب عدد صحیح است (مقدار --bits کمتر از ۳۲ یا خروجی به stdout) بهشدت توصیه میشود.
گزینههای اطلاعاتی:
- -h, --help
- اطلاعات نسخه و فهرستی از قالبها و پسوندهای پشتیبانیشده فایل را چاپ کرده و سپس خارج میشود.
- -v, --version
- اطلاعات نسخه را چاپ کرده و سپس خارج میشود.
مثالها (EXAMPLES)
چند نمونه از فراخوانیهای ابزار، همگی با این فرض که دادههای منبع در قالب CD هستند (نمونههای علامتدار ۱۶ بیتی، استریو، 44.1 کیلوهرتز):
مدتزمان cdda.wav را دقیقاً به ۱۲۰ ٪ میکشد و خروجی را برای پخش بیدرنگ به برنامه aplay ارسال (pipe) میکند.
یک جریان ogg را پخش میکند که با فشردهسازی زمانی، مدت آن به ۸۰ ٪ کاهش یافته است. اگر mp3 را ترجیح میدهید، دستور معادل آن به این صورت است:
اشکالات (BUGS)
تجزیه ضعیف خط فرمان و پیامهای بازخورد خطا. ترکیبهای متعددی از قالبهای فایل خروجی و کوانتیزاسیون، و همچنین عملکرد روی سیستمهای بیگ-اندین (big-endian) آزمایش نشدهاند. وکودر فاز تعداد زیادی از چرخههای CPU را مصرف میکند.
نویسندگان (AUTHORS)
پیادهسازی اصلی وکودر فاز توسط Mark Dolson در UCSD به عنوان بخشی از مجموعه CARL انجام شده و توسط Richard Dobson با مهارت به عملکرد جریانی (streaming) تبدیل گردیده است.
ابزار stretch و این صفحه راهنما توسط Tim Goetze <tim@quitte.de> نوشته شده است.
صفحه خانگی (HOMEPAGE)
آخرین نسخه این ابزار را میتوان از نشانی زیر دریافت کرد: http://quitte.de/dsp/pvoc.html
| March 25, 2004 |