انشاء تطبيق تحويل النص الكلام باستخدام Swift |
مع اطلاق iOS 7, قدمت Apple تطبيق لتحويل النص الى كلام API و الذي يسمح للمطورين باضافة خاصية تحويل النص الى كلام الى تطبيق ما بطريقة سريعة و سهلة. يمكن لذلك أن يكون مفيدا عند اضافة طبقة الوصول لتطبيق أو لجعلها ميزة في لعبة تعليمية. في هذا الدرس, ستتعلم كيفية انشاء ميزة كهذه في Swift.
1. المقدمة
ستتعلم في هذا الدرس كيفية انشاء تطبيق موبايل باستخدام Swift و Xcode 6. فيما اذا كنت على معرفة بـ Xcode أم لا, فان هذا الدرس سيساعدك على العمل براحة مع Apple's IDE و لغة البرمجة .Swift باستخدام هذا التطبيق, سيتمكن المستخدم من بدء خاصية تحويل النص الى كلام من خلال النقر على زر على الشاشة. يمكن للمستخدم أن يحرر النص المستهدف في مشهد النص.
في هذا الدرس, ستتعلم الصفات التالية عن iOS:
- انشاء مشروع جديد في Xcode 6
- انشاء واجهة مستخدم في باني الواجهة
- ربط عناصر واجهة المستخدم ياستخدام المنافذ
- تحفيز الطرق في وسيط المستخدم باستخدام النشاطات
2. انشاء المشروع
الخطوة 1: قالب المشروع
افتح Xcode و اختر New > Project... (مشروع> جديد) من قائمة الملف. اختر Single View Application (تطبيق أحادي المشهد) من قائمة قوالب تطبيق iOS و من ثم انقر على التالي.
الخطوة 2: تركيبة المشروع
قم بتسمية مشروعك, أدخل اسم المنظمة و المعرف. اختر iPhone من قائمة الأجهزة, انقر على التالي و اختر موقعا لحفظ المشروع. لا تنس أن تغير اللغة الى Swift.
3. واجهة المستخدم
تعد واجهة المستخدم لتطبيق ما واضحة. ان الصورة في الاسفل ستعطيك فكرة عن العمل الذي سنقوم به و كيف ستبدو واجهة المستخدم في نهاية المطاف. يمكنك أن تجد طريقة العمل و موارد أخرى في ملفات الدروس على GitHub.
الخطوة 1: أضف مشهد النص
دعونا ننشئ مشهد النص الذي سيحتوي على النص و التطبيق الذي سينقلب الى صوتي. افتح اللوح. الرئيسي و اسحب الكائن UITextView من مكتبة الكائنات الى مشهد متحكم المشهد. يمكنك ان تغير النص الافتراضي لمشهد النص أو أن تتركه فارغا.
الخطوة 2: اضافة الزر
سيحفز الزر في واجهة المستخدم النص للبدء بخاصية الكلام. اسحب و أسقط الكائن UIButton من مكتبة الكائنات على مشهد متحكم المشهد. يمكنك تغيير عنوان الزر أو تغيير المظهر من خلال اضافة صورة في (Attributes Inspector (مفتش اللواحق.
4. استيراد AVFoundation
من أجل استخدام تطبيق تحويل النص الى كلام API, سنحتاج الى الوصول الى صنف AVSpeechSynthesizer, و الذي يعد جزأ من اطار عمل AVFoundation. اختر مشروعك في Xcode و اذهب الى قسم المكتبات و أطر العمل المرتبطة في أسفل الشريط العام. انقر على زر الاضافة و اختر اطار عمل AVFoundation من القائمة.
افتح ViewController.swift و أضف الكود التالية فقط أسفل السطر UIKit المستورد.
import AVFoundation
هذا ما سيجعل أصناف أطر عمل AVFoundation متاحة في صنف ViewController, متيحا لنا الولوج الى صنف AVSpeechSynthesizer الذي سنحتاجه خلال ثوان.
5. منفذ مشهد النص
من أجل اللوج الى مشهد النص في صنف ViewController, سنحتاج الى انشاء منفذا و ربطه بباني الواجهة. يعد المنفذ خاصية يمكنك تعيينها في باني الواجهة.
افتح المحرر المساعد من خلال اختيار المحرر المساعد من قائمة المشهد. عندها يمكننا أن نرى صنف ViewController التابع لوسيط المستخدم على اليسار و إنشاؤه على اليمين. احرص ان Xcode تعرض ملف ViewController.swift على اليمين.
في باني الواجهة, انشئ منفذا لمشهد النص من خلال الضغط على control و السحب من مشهد النص الى محرر الكود على اليمين. ستلاحظ أن هنالك خطا أزرقا, يشر ذلك الى مكان الذي سيدخل به Xcode المنفذ لمشهد النص.
عندا تطلق زر الفأرة, سيعرض لك Xcode حوارا حيث يمكنك أن تعين اسما للمنفذ. أطلق لمنفذ textView اسما و انقر اتصل.
يمكنك التعرف على المنافذ من خلال المجمع التوجيهي @IBOutlet. هذا يخبر المجمع أن textView هو عبارة عن مرجع للكائن UITextView الذي قمنا ببنائه في واجهة المستخدم.
@IBOutlet weak var textView: UITextView!
ستلاحظ أن هنالك كلمتين أساستين تتبعان المجمع التوجيهي, weak و Var. تعد الكلمة الاساسية weakلاحقة مستخدمة للمراجع التي لا تحتاج الى حفظ. هذا شائع الاستخدام بالنسبة لمنافذ باعتبار أنهم يحفظون من قبل superview, مشهد متحكم المشهد في هذه الحالة.
تشير الكلمة الاساسية الثانية var الى أن textView عبارة عن متغير عكس الثابت. يتبع اسم المتغير بنقطتين و نوع المتغير.
6. متغيرات الكلام
أسفل منفذ textView, سنعلن عن الثابت, synth, و المتغير, myUtterance. تشير الكلمة الاساسية let الى أن synth مصرح عنه كثابت. و هذا يعني أن قيمة synth لا يمكن أن تتغير.
let synth = AVSpeechSynthesizer()
var myUtterance = AVSpeechUtterance(string: "")
يحمل الثابت synth مرجعا للنموذج AVSpeechSynthesizer. يحمل المتغير myUtterance النص الذي سوف نحوله الى كلام لاحقا.
7. اضافة نشاط
يجب على الزر الموجود في واجهة المستخدم ان يحفز طريقة تدعى textToSpeech. من أجل انجاز دلك, نحتاج أن ننشئ نشاط باستخدام معرف نوع @IBAction . باستخدام معرف نوع @IBAction , ستظهر الطريقة في واجهة المستخدم كنشاط. دعونا نرى كيف يعمل ذلك.
افتح محرر المساعد و احرص على أن ملف XIB ظاهر على الجهة اليسرى و صنف ViewController على اليمنى. اختر الزر في باني الواجهة و اضغط control و اسحب من الزر الى صنف ViewController على اليمين كما هو موضح في الاسفل.
سيظهر لك Xcode حوارا مشابها. و لكن في هذه المرة, نوع الاتصال هو Action. سم هذا النشاط textToSpeech, و احرص أن الحدث قد تم تعيينه لـ Touch Up Inside و من ثم انقر اتصل.
بالنتيجة, سينشئ Xcode دالة أو طريقة أو نشاط لك ستبدو كالتي موضحة بالاسفل. يتم استدعاء النشاط عندما ينقر المستخدم على الزر.
@IBAction func textToSpeech(sender: UIButton)
{
}
تعلن الكلمة الاساسية func عن دالة أو طريقة. في هذه الحالة, اسم الدالة هو textToSpeech. ستلاحظ ايضا أن معاملة المرسل هي من نوع UIButton, الذي يرجع الى UIButton الذي أنشأناه في باني الواجهة.
8. انشاء textToSpeech
تعالج كتلة الكودات التالية محادثة النص الى الكلام عندما ينقر المستخدم على الزر.
@IBAction func textToSpeech(sender: UIButton)
{
myUtterance = AVSpeechUtterance(string: textView.text)
myUtterance.rate = 0.3
synth.speakUtterance(myUtterance)
}
نقوم أولا ببناء نموذج AVSpeechUtterance من خلال تمرير نص الكائن textView في الباني. في السطر التالي, سنعين المعدل أو السرعة التي سينطق بها الكلام. كلما انخفض المعدل, أصبح الكلام أبطأ. و أخيرا, سنستدعي طريقة speakUtterance الى نموذج AVSpeechSynthesizer, ممررين بذلك كائن myUtterance. هذا سيبدأ النص الى كلام.
هذا ما يجب أن يبدو عليه صنف 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)
}
}
9. اختبار المحفز
حان الوقت لفحص التطبيق في محفز iOS. اضغط على Command-R أو اضغط على زر التشغيل في اعلى جهة اليسار لتشغيل التطبيق. افحص التطبيق من خلال ادخال نصا الى مشهد النص و انقر الزر في الاسفل.
الخلاصة
في هذا الدرس, تعلمنا كيفية انشاء نص الى كلام على iOS, استخدام باني الواجهة, انشاء المنافذ و النشاطات. انني أشجعك على اجراء تجارب على النتائج و تعديل التطبيق لجعله خاص بك. امل انك أحبت هذا الدرس و وجدته مفيدا.
ليست هناك تعليقات: