خبرنامه
 
پست الکترونیکی خود را وارد نمایید
شماره خبر : 867
تاریخ انتشار :
آموزش برنامه نویسی apple:ایجاد برنامه تبدیل متن به گفتار تحت Swift

آموزش برنامه نویسی apple:ایجاد برنامه تبدیل متن به گفتار تحت Swift

اگر از افرادی هستید که همیشه پیگیر اخبار مختلف اپل در حوضه های مختلف سخت افزاری و نرم افزاری هستید حتماً می دانید که این شرکت همزمان با انتشار نسخه جدید سیستم عامل موبایلی خود یعنی iOS 7، API جدیدی تحت عنوان text to speech را منتشر کرده که به توسعه دهندگان نرم افزار این اختیار را می دهد تا قابلیت تبدیل متن به گفتار را به صورت کاملاً ساده و سریع به برنامه مورد نظر خود اضافه کنند. این قابلیت را می توان به یک لایه تحت برنامه اضافه کرده و یا از آن به عنوان یک ویژگی برجسته و مفید در یک برنامه کاربردی آموزشی استفاده ببرید. در این مقاله به شما نشان خواهیم داد تا چگونه از چنین قابلیت هایی در برنامه خود با استفاده از ابزار Swift بهره ببرید. در ادامه سری آموزش های برنامه نویسی apple با osx.ir همراه باشید.
مقدمه :
در این مقاله آموزشی شما نحوه ایجاد یک برنامه موبایلی تحت سیستم عامل iOS را با استفاده از Swift و در بستر کدنویسی Xcode 6 فرا خواهید گرفت.
به طور کلی چه پیش از این با محیط کد نویسی Xcode آشنایی داشته باشید یا نه، در هر حال آموزش حال حاضر به شما کمک خواهد کرد تا با زبان برنامه نویسی Swift و بستر توسعه نرم افزاری اپل یا همان Apple IDE آسانتر کار کنید. هدف نهایی از ساخت این برنامه و استفاده از قابلیت گفته شده در آن این است که کاربر بتواند با وارد کردن متن خود و لمس کردن صفحه نمایش، متن وارد شده را به گفتار تبدیل کند.
در ادامه این مطلب آموزشی شما با موارد زیر در حوضه توسعه تحت بستر iOS آشنا خواهید شد :
ایجاد یک پروژه جدید در Xcode 6
ایجاد یک رابط کاربری در Interface Builder یا همان سازنده رابط
اتصال اجزای رابط کاربری با استفاده outletها
اجرای متدها در رابط کاربری با استفاده از اکشنها
راه اندازی پروژه :
مرحله اول : Project Template
ابتدا بستر کدنویسی Xcode را باز کرده و از منوی File، مسیر  New > Project را طی کنید. حال از بین لیست نمونه های  iOS Application، گزینه  Single View Application را انتخاب کرده و در نهایت روی گزینه Next کلیک کنید.

مرحله دوم :
برای پروژه خود نامی دلخواه را انتخاب کرده و برای دو فیلد مقابل identifier و organization's name مقداری را تعیین کنید. اکنون از لیست دستگاه های موجود در مقابل گزینه Devices، گزینه iPHone را انتخاب کرده و با کلیک بر روی گزینه Next، مکانی را برای ذخیره پروژه خود انتخاب کنید. البته فراموش نکنید که زبان مورد نظر را تحت Swift تنظیم کنید.

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

مرحله اول : اضافه کرده شیء Text View
ابتدا باید یک شیء text view ایجاد کنیم که متن کاربر را دریافت کرده و آن را به صوت تبدیل کند. برای این منظور هم اکنون بخش Main.storyboard را باز کرده و یک شیء از جنس UITextView را از بخش Object Library به درون بخش View،  تحت  view controller درگ کنید. حال می توانید متن پیشفرض داخل شی را تغییر داده و یا آنرا خالی قرار دهید.

مرحله دوم : اضافه کردن شیء Button
شیء دکمه‌ای که قرار است در رابط کاربری قرار دهیم در واقع عملیات تبدیل متن به گفتار را انجام می دهد. برای این منظور ابتدا یک شیء UIButton را از بخش  Object Library به درون View تحت  view controller درگ کنید. برای تغییر عنوان آن، و یا به طور کلی ظاهر این شیء، شما می توانید با اضافه کردن یک تصویر یا همان Image در بخش Attributes Inspector این کار را انجام دهید.
وارد کردن فریمورک AVFoundation :
به منظور استفاده از APAی text to speech لازم است تا به کلاس AVSpeechSynthesizer که در واقع بخشی از فریمورک AVFoundation می باشد دسترسی پیدا کنیم. حال برای این منظور پروژه خود را در رابط Xcode انتخاب کرده و به بخش Linked Frameworks and Libraries در پایین زبانه General رجوع کنید. سپس روی دکمه Plus کلیک کرده و در نهایت فریمورک framework را از لیست نمایان شده انتخاب کنید.

اکنون ViewController.swift را باز کرده و و کد زیر را درست در زیر خطی که عبارت import UIKit در آن مشخص شده قرار دهید:


import AVFoundation

این خط کد سبب می شود ما بتوانیم به کلاس های فریمورک AVFoundation تحت کلاس ViewController دسترسی داشته و در نتیجه با استفاده از زیر کلاس این کلاس یعنی AVSpeechSynthesizer عملیات مد نظر خود یعنی تبدیل متن به گفتار را انجام دهیم.
Text View Outlet :
به منظور دسترسی به شیء text view تحت کلاس ViewController ابتدا لازم است تا یک Outlet یا همان مشخصه را ایجاد کرده و آن را در Interface Builder یا همان سازنده رابط متصل کنید. اگر بخواهیم به طور خلاصه تعریفی از outlet داشته باشیم باید اینطور آن را تعریف کنیم که در واقع یک Outlet، یک مشخصه بوده که شما می توانید آنرا در Interface Builder تنظیم کنید.
حالا از منوی View، بخش Assistant Editor را باز کنید. این رابط به ما اجازه می دهد تا رابط کاربری کلاس ViewController را در سمت چپ و پیاده سازی آن را در سمت راست بتوانیم مشاهده و بررسی کنیم. البته ناگفته نماند مطمئن شوید که فایل ViewController.swift نیز در سمت راست رابط Xcode نمایان می شود.

اکنون در رابط Interface Builder،  یک مشخصه برای شیء text view با نگه داشتن کلید کنترل و درگ کردن از شیء text view تحت ویرایشگر کد که در سمت راست مستقر شده ایجاد کنید. خط آبی را در نظر داشته باشید، در واقع این خط جایی را مشخص می کند که خط فرمان رابط Xcode قرار است مشخصه را در درون text view درج کند.

زمانی که دکمه مواس را رها می کنید، رابط نرم افزار Xcode دیالوگی را نمایان می کند که شما می توانید در آن نام مشخصه خود را تنظیم کنید.  نام این مشخصه را textView گذاشته و روی گزینه Connect کلیک کنید.

شما می توانید با استفاده از دستوری کامپایلری @IBOutlet ساختار مشخصه‌ها را تشخیص دهید. به عنوان مثال این دستور در مورد مشخصه ای که ایجاد کردیم به ما اعلام می کند که این مشخصه در واقع یک ارجاع به شیء UITextViewای است که ما در Interface Builder ایجاد کردیم. در اصل این بدان معناست که هر تغییری که ما تحت شیء textView اعمال کنیم به شیء UITextViewی موجود تحت رابط کاربری منعکس خواهد شد.


@IBOutlet weak var textView: UITextView!

شما در ادامه کار با دو لغت کلیدی weak و var که در زمره دستورات کامپایلری قرار گرفته اند آشنا خواهید شد. لغت کلیدی weak در واقع یک مشخصه بوده که برای ارجاعاتی مورد استفاده قرار می گیرد که نیاز به نگهداری ندارند. از آنجایی که آنها توسط superviewی خود، در اینجا یعنی viewی متعلق به view controller نگهداری می شوند، به صورت متدوال برای استفاده تحت outletها مورد رجوع قرار می گیرند.
لغت کلیدی دوم یعنی var نیز مشخص می کند که textView در واقع یک متغیر است نه یک ثابت. در ادامه نام متغیر نیز با یک دو نقطه و نوع آن مشخص شده است.
متغیرهای Speech :
حال در زیر مشخصه textView، ما یک ثابت با نام sysnth و یک متغیر با نام myUtterance اعلان می کنیم. لغت کلیدی let در واقع نشان دهنده این است که synth از نوع ثابت تعریف شده است. این بدان معناست که مقدار synth نمی تواند تغییر کند.


let synth = AVSpeechSynthesizer()
var myUtterance = AVSpeechUtterance(string: "")

وظیفه ثابت synth در کد بالا این است که یک ارجاع تحت نمونه AVSpeechSynthesizer در خود نگهداری کند. ناگفته نماند متغیر myUtterance نیز به منظور ذخیره رشته‌ای مورد استفاده قرار می گیرد که قرار است در ادامه کار آن را به گفتار یا همان Speech تبدیل کنیم.
اضافه کردن Action :
دکمه ای که در رابط کاربری گنجانده شده است باید دستورات داخل متدی با نام textToSpeech را اجرا کند. برای انجام اینکار ما لازم است تا یک اکشن را با استفاده از توصیف کننده نوع @IBAction ایجاد کنیم.
با استفاده از توصیف کننده نوع @IBAction، متد مد نظر ما در سازنده رابط(Interface Builder) به عنوان یک اکشن نمایان خواهد شد. حال اجازه دهید تا نگاهی به نحوه کار داشته باشیم. با ما همراه باشید.


ابتدا رابط  Assistant Editor را باز کرده و مطمئن شوید که فایل  XIB در سمت چپ و همچنین کلاس ViewController در سمت راست نمایان شده است. اکنون دکمه را در سازنده رابط انتخاب کرده و آنرا به کلاس ViewController، همانطور که در تصویر زیر مشخص شده، درگ کنید.

با اینکار، نرم افزار Xcode کادر محاوره‌ای مشابهی را نمایان می کند. این بار نوع ارتباط ایجاد شده از جنس Action است. اکنون نام این اکشن را textToSpeech قرار داده و مطمئن شوید که کادر بازشوی جلوی عبارت Event نیز تحت گزینه Touch Up Inside تنظیم شده است. در نهایت هم روی گزینه Connect کلیک کنید.

در نتیجه انجام این کارها، نرم افزار Xcode تابع، متد یا اکشنی را برای شما ایجاد خواهد کرد که به مانند ساختار کد زیر به نظر می رسد. هر زمان که کاربر روی دکمه ایجاد شده را لمس بکند، دستورات داخل این اکشن اجرا می شوند.


@IBAction func textToSpeech(sender: UIButton)
{
 
}

لغت کلیدی func که در بالا مشخص شده است یک تابع یا متد را اعلان می کند. در این مورد نام تابع، textToSpeech در نظر گرفته شده است.
حتماً تا العان متوجه شده اید که پارامتر sender از نوع UIButton در واقع به شی UIButtonای که ما پیش از این در سازنده رابط ایجاد کرده ایم اشاره می کند.
پیاده سازی textToSpeech :
قطعه کد بعدی که در زیر مشخص شده است در واقع عملیات کنترل و تبدیل متن به گفتار را، در صورتی که کاربر روی دکمه کلیک کند انجام می دهد.


@IBAction func textToSpeech(sender: UIButton)
{
    myUtterance = AVSpeechUtterance(string: textView.text)
    myUtterance.rate = 0.3
    synth.speakUtterance(myUtterance)
}

ما ابتدا یک نمونه AVSpeechUtterance را با انتقال متن از شیء textView در سازنده یا constructor می سازیم. در خط بعد، rate یا همان سرعتی را تنظیم می کنیم که متن مورد نظر باید مطابق آن به گفتار تبدیل شود. هر چه این مقدار از متغیر rate کمتر باشد، سرعت گفتار نیز آهسته تر، و هر چقدر بیشتر باشد ریتم آن تندتر خواهد شد. در نهایت نیز ما متد speakUtterance را روی نمونه AVSpeechSynthesizer فراخوانی می کنیم که البته این کار از طریق شیء myUtterance که در داخل پرانتر به عنوان آرگومان قرار گرفته، انجام می پذیرد. مجموعه دستورات گفته شده سبب شکل گیری عملیات تبدیل متن به گفتار یا همان text to speech خواهد شد.

مجموعه کد زیر، کل کدهایی است که کلاس ViewController باید در دل خود برای انجام عملیات مورد نظر جای داده باشد :


import UIKit
import AVFoundation
 
class ViewController: UIViewController
{
    @IBOutlet weak var textView: UITextView!
    
    let synth = AVSpeechSynthesizer()
    var myUtterance = AVSpeechUtterance(string: "")
    
    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
    }
 
    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func textToSpeech(sender: UIButton)
    {
        myUtterance = AVSpeechUtterance(string: textView.text)
        myUtterance.rate = 0.3
        synth.speakUtterance(myUtterance)
    }
}

تست در شبیه ساز :
حال وقت آن رسیده است تا مجموعه کارهایی را که انجام گرفته تحت یک برنامه و در بستر شبیه ساز iOS آزمایش کنیم. برای این منظور ابتدا کلید میانبر Command-R یا گزینه Play که در سمت چپ و بالای بستر محیط Xcode قرار گرفته را بزنید. حال متنی را در شیء text view وارد کرده و روی دکمه‌ای که در پایین آن تعبیه شده تپ کنید.

 

منبع:code.tutsplus.com

مترجم:هادی نجار

تعداد بازدید : 2484

نظرات
ناشناس
آموزش خوبی بود خیلی ممنون
ارسال نظر

سوال امنیتی : مجموع دو عدد 6 و 1 =