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 نسبتی را تعیین می‌کند که مدت‌زمان سیگنال صوتی با آن مقیاس‌گذاری می‌شود. مقادیر بیش‌ازحد می‌توانند باعث ایجاد ناهنجاری‌های صوتی در سیگنال خروجی شوند که معمولاً به صورت مدولاسیون دوره‌ای دامنه شنیده می‌شوند. برای رسیدن به نسبت انبساط/فشرده‌سازی زمانی دقیق، حاصل‌ضرب این مقدار و پارامتر -o (--overlap) باید یک عدد صحیح باشد. -a, --amplify ضریب تقویت خطی را برای سیگنال خروجی تعیین می‌کند. مقدار پیش‌فرض 1.0 است. -q, --quiet ابزار را بی‌صدا می‌کند تا درباره کارهایی که انجام می‌دهد پیامی نمایش ندهد. گزینه‌های کنترل پردازش: -f, --fft طول DFT (تبدیل فوریه گسسته) را تعیین می‌کند که برای دستیابی به بهترین نتیجه باید توانی از دو باشد. مقادیر فرد ممکن است باعث توقف و بروز خطای ابزار شوند. اندازه‌های بزرگ‌تر DFT به قیمت افزایش بار محاسباتی، وضوح فرکانسی بهتری فراهم می‌کنند. مقدار پیش‌فرض ۱۰۲۴ نمونه است. -o, --overlap بازه‌ای را که در آن بازترکیب سیگنال انجام می‌شود کنترل می‌کند. مقادیر کوچک‌تر به قیمت افزایش بار محاسباتی، نتیجه روان‌تری را به همراه دارند. مقدار پیش‌فرض ۱۲۸ نمونه است. گزینه‌های سیگنال ورودی پایپ‌شده: اگر ورودی سیگنال از stdin باشد، فرض پیش‌فرض درباره قالب داده‌ها (به‌جز قرارداد ۱۶ بیتی علامت‌دار لیتل-اندین که پیش‌تر ذکر شد)، صدای دو کاناله با نرخ نمونه‌برداری 44.1 کیلوهرتز است. گزینه‌های زیر این مقادیر را بازنویسی می‌کنند: -c, --channels بدون هیچ نکته غافلگیرکننده: 1 برای مونو، 2 برای استریو و غیره است. -r, --rate نرخ نمونه‌برداری را تنظیم می‌کند. عمق بیت خروجی: -b, --bits عمق بیت خروجی را مشخص می‌کند (تنها برای خروجی فایل فیزیکی). ۸، ۱۶ یا ۲۴ برای اعداد صحیح علامت‌دار، ۳۲ یا ۶۴ برای ممیز شناور. مقدار پیش‌فرض ۱۶ بیت است. (دقت محاسبات داخلی به‌صورت ممیز شناور ۳۲ بیتی است.) -l, --limit این گزینه باعث می‌شود ابزار دامنه سیگنال خروجی را برش (clip) دهد تا در محدوده کوانتیزاسیون خروجی، یا در صورت استفاده از قالب ممیز شناور، در محدوده [-1,+1] باقی بماند. استفاده از این فلگ در شرایطی که خروجی در قالب عدد صحیح است (مقدار --bits کمتر از ۳۲ یا خروجی به stdout) به‌شدت توصیه می‌شود. گزینه‌های اطلاعاتی: -h, --help اطلاعات نسخه و فهرستی از قالب‌ها و پسوندهای پشتیبانی‌شده فایل را چاپ کرده و سپس خارج می‌شود. -v, --version اطلاعات نسخه را چاپ کرده و سپس خارج می‌شود. مثال‌ها (EXAMPLES) چند نمونه از فراخوانی‌های ابزار، همگی با این فرض که داده‌های منبع در قالب CD هستند (نمونه‌های علامت‌دار ۱۶ بیتی، استریو، 44.1 کیلوهرتز): stretch -o 100 -t 1.2 cdda.wav | aplay -fcd مدت‌زمان cdda.wav را دقیقاً به ۱۲۰ ٪ می‌کشد و خروجی را برای پخش بی‌درنگ به برنامه aplay ارسال (pipe) می‌کند. cat file.ogg | oggdec - | stretch -t.8 | aplay -fcd یک جریان ogg را پخش می‌کند که با فشرده‌سازی زمانی، مدت آن به ۸۰ ٪ کاهش یافته است. اگر mp3 را ترجیح می‌دهید، دستور معادل آن به این صورت است: madplay -o raw:- file.mp3 | stretch -t.8 | aplay -f cd اشکالات (BUGS) تجزیه ضعیف خط فرمان و پیام‌های بازخورد خطا. ترکیب‌های متعددی از قالب‌های فایل خروجی و کوانتیزاسیون، و همچنین عملکرد روی سیستم‌های بیگ-اندین (big- endian) آزمایش نشده‌اند. وکودر فاز تعداد زیادی از چرخه‌های CPU را مصرف می‌کند. نویسندگان (AUTHORS) پیاده‌سازی اصلی وکودر فاز توسط Mark Dolson در UCSD به عنوان بخشی از مجموعه CARL انجام شده و توسط Richard Dobson با مهارت به عملکرد جریانی (streaming) تبدیل گردیده است. ابزار stretch و این صفحه راهنما توسط Tim Goetze نوشته شده است. صفحه خانگی (HOMEPAGE) آخرین نسخه این ابزار را می‌توان از نشانی زیر دریافت کرد: http://quitte.de/dsp/pvoc.html March 25, 2004 stretch(1)