چگونه کامپیوتر خود را به حرف زدن/گفتن آنچه تایپ می کنید بپردازید

ویژگی جالبی در ویندوز(Windows) وجود دارد که به شما این امکان را می دهد که رایانه خود را وادار کنید هر چه به آن می گویید صحبت کند یا صحبت(computer talk or speak) کند! این روش از یک API داخلی نصب شده در ویندوز XP(Windows XP) ، ویستا(Vista) ، 7، 8 و 10 به نام SAPI ( رابط برنامه نویسی برنامه گفتار(Speech Application Programming Interface) ) بهره می برد.

Microsoft Speech API چیزی است که برای قابلیت دسترسی(accessibility feature) متن به گفتار  تعبیه شده در ویندوز(Windows) استفاده می شود. همچنین می‌توانید برنامه‌هایی بنویسید که API را فراخوانی کنند ، که به شما اجازه می‌دهد برنامه‌هایتان صحبت کنند، اما این برای توسعه‌دهندگان است.

فقط اینکه کامپیوترتان را بخواهید آنچه را که می خواهید بگوید در واقع بسیار آسان است! در این مقاله، من به شما نشان خواهم داد که چگونه یک اسکریپت VBS(VBS script) ایجاد کنید که یک ورودی متن را(text input) از کاربر بگیرد و سپس آن را بیان کند. همچنین به نحوه کدنویسی سخت متنی که می‌خواهید گفته شود اشاره می‌کنم و سپس آن اسکریپت را برای اجرا در رویدادهای خاص مانند راه‌اندازی ویندوز(Windows) یا خروج از سیستم برنامه‌ریزی می‌کنم.

متن ورودی، پیام صحبت کنید

بیایید با یک اسکریپت ساده شروع کنیم که یک کادر محاوره ای(dialog box) ظاهر می شود که در آن می توانید آنچه را که می خواهید ویندوز صحبت کند تایپ کنید. ابتدا(First) پیش بروید و Notepad را باز کنید.

مرحله 1:(Step 1:)  متن زیر را در یک سند جدید قرار دهید:

Dim message, sapi
message=InputBox(“Enter the text you want spoken”,”Speak This”)
Set sapi=CreateObject(“sapi.spvoice”)
sapi.Speak message

توجه داشته باشید که وقتی متنی را از مرورگر وب(web browser and paste) خود کپی می کنید و آن را در Notepad قرار می دهید ، نقل قول ها باعث ایجاد مشکل می شوند. قبل از اینکه فایل را ذخیره کنید، باید هر نقل قول (“) را مرور کرده و حذف کنید و نقل قول را دوباره تایپ کنید. در مثال زیر، شش نقل قول وجود دارد. باید چیزی شبیه تصویر زیر(image below) باشد.

کامپیوتر را به صحبت

حالا وقتی می‌روید فایل را ذخیره می‌کنید، هر نامی برای آن بگذارید، اما مطمئن شوید که بعد از نام، VBS را هم تایپ کنید. در مرحله بعد، برای کادر ذخیره به عنوان نوع( Save as type) ، به جای اسناد متنی(Text Documents) پیش‌فرض ، همه فایل‌ها( All files) را انتخاب کنید .

ایجاد مکالمه کامپیوتری

حالا روی فایل VBS(VBS file) دوبار کلیک کنید و باید یک کادر ورودی(input box) را مشاهده کنید که در آن می توانید متنی را که می خواهید گفتاری تایپ کنید! چیزی را تایپ کنید(Type something) و روی OK کلیک کنید.

جعبه محاوره ای صحبت کن

اگر همه چیز را درست(everything right) انجام دادید، باید صدای مرد یا زن را بشنوید که جمله شما را بیان می کند. اگر هر نوع پیغام خطایی(error message) دریافت کردید ، حتما متن را دوباره کپی و جایگذاری کنید و آن نقل قول ها را جایگزین کنید.

تنظیمات صوتی SAPI را پیکربندی کنید

این جالب است، اما ما همچنین می‌توانیم رایانه مکالمه کوچک خود را با تنظیمات مختلف پیکربندی کنیم. می‌توانیم صدا، سرعت یا کندی مکالمه صدا را تغییر دهیم و جنسیت زن و مرد را تغییر دهیم. در اینجا چند کد نمونه(example code) وجود دارد که در آن چند خط اضافی اضافه کردم.

Dim message, sapi
message=InputBox(“Enter the text you want spoken”,”Speak This”)
Set sapi=CreateObject(“sapi.spvoice”)
Set sapi.Voice = sapi.GetVoices.Item(1)
sapi.Rate = 0
sapi.volume = 100
sapi.Speak message

نرخ پیش‌فرض(default rate) 0 و محدوده 10- تا 10 است. -10 صدای بسیار آهسته و 10 فوق‌العاده سریع صحبت می‌کند. میزان صدا روی 100 پیش‌فرض است و محدوده 0 تا 100 است. خطی که با Set sapi.Voice شروع می‌شود به شما امکان می‌دهد در صورت نصب روی سیستم خود، به صدای دیگری تغییر دهید.

توجه داشته باشید که تعداد صداهایی که می توانید انتخاب کنید به سیستم عامل(operating system) بستگی دارد . در ویندوز 7(Windows 7) ، تنها یک صدا وجود دارد، مایکروسافت آنا(Microsoft Anna) .

صداهای نصب شده

در ویندوز 10(Windows 10) دو صدا وجود دارد: Microsoft David و Microsoft Zira(Microsoft David and Microsoft Zira) همانطور که در زیر نشان داده شده است.

صدای دیویس مایکروسافت

صدای زیرا مایکروسافت

اگر فقط یک صدای روی سیستم شما نصب شده است، باید آن را که می گوید sapi.GetVoices.Item(1) را به sapi.GetVoices.Item(0) تغییر دهید ، در غیر این صورت هنگام اجرای اسکریپت با پیغام خطا مواجه خواهید شد. (error message)همچنین می توانید یک سند Notepad(Notepad document and paste) دیگر ایجاد کنید و کد زیر را در آن قرار دهید، که به شما می گوید چه صداهایی نصب شده اند. مانند تصویر بالا آن را به عنوان یک فایل VBS ذخیره کرده و اجرا کنید.

Set VObj = CreateObject(“SAPI.SpVoice”)
For Each Voice In VObj.getvoices
I = I + 1
msgbox “” & (I – 1) & ” – ” & Voice.GetDescription
Next

تا به حال، ما از این گفتگوی بازشو(popup dialog) برای وارد کردن متن استفاده می‌کردیم، اما می‌توانید پیام خود را نیز به سادگی در فایل اسکریپت تایپ کنید(script file) . اگر بخواهید اسکریپت را برای اجرای خودکار برنامه ریزی کنید، این کار مفید خواهد بود. بدیهی است که می توان از این برای شوخی دوستان و خانواده خود استفاده کرد و واقعاً خوب کار می کند.

فقط تصور کنید کسی کامپیوترش را روشن می کند و می شنود که کامپیوتر به او می گوید: " سلام جان(Hello John) ، من خیلی خوابم می آید، لطفا امروز مرا اذیت نکن!" وقتی بوت می شود! می توانم از روی تجربه به شما قول بدهم، هیستریک است و حتما باید آن را امتحان کنید.

به منظور هاردکد کردن پیام، به سادگی خط آخر را به چیزی شبیه به این تغییر دهید:

sapi.Speak “Hello John, I am very tired today!”

فایل اسکریپت زمانبندی

اکنون که پیام خود را برای هدف مورد نظر خود کدگذاری کرده اید، به سادگی باید آن را زمانی که می خواهید اجرا کنید. اگر از فن‌آوری آگاه هستید، می‌توانید از برنامه‌ای مانند AutoIt استفاده کنید ، که به شما امکان می‌دهد کارهای شدیدی مانند اجرای فایل اسکریپت(script file) خود را هنگامی که یک برنامه خاص باز می‌شود یا زمانی که یک پنجره به حداکثر یا کوچک‌سازی می‌شود، انجام دهید.

من وقت ندارم در این پست به همه این موارد بپردازم، اما خوشبختانه مایکروسافت(Microsoft) یک ویژگی داخلی به نام Task Scheduler دارد که به شما امکان می دهد کارهای بسیار پیچیده ای را با اسکریپت ها انجام دهید.

پست قبلی من به طور عمیق در مورد نحوه برنامه ریزی یک فایل اسکریپت(script file) برای اجرا در هنگام رخ دادن رویدادهای خاص در ویندوز(Windows) است. اگر برای اجرای اسکریپت خود مشکلی دارید، در نظر خود نظر بدهید و من سعی خواهم کرد کمک کنم. لذت بردن!



About the author

من یک برنامه نویس کامپیوتر هستم و بیش از 15 سال است که هستم. مهارت های من در توسعه و نگهداری برنامه های کاربردی نرم افزاری و همچنین ارائه پشتیبانی فنی برای آن برنامه ها نهفته است. همچنین برنامه نویسی کامپیوتر را به دانش آموزان دبیرستانی آموزش داده ام و در حال حاضر یک مربی حرفه ای هستم.



Related posts