آموزش ساخت اپلیکیشن تبدیل صدا به متن در B4A – جلسه سوم
سلام
با سومین جلسه ی آموزشی ساخت اپلیکیشن تبدیل صدا به متن در بیسیک فور اندروید در خدمتتون هستیم؛ در این قسمت قصد داریم تا نحوه تبدیل صدا به متن رو بگیم، در رابطه با دسترسی ها بیشتر توضیح بدیم و … ، در ادامه همراه بپرسم باشید.
در این جلسه یادخواهید گرفت:
- تبدیل صدا به متن
- استفاده از اسنک بار به جای ToastMessageShow
- توضیح مفصل درمورد استفاده از کتابخانه RuntimePermissions و ضروت استفاده از آن برای کارکردن با حافظه گوشی
قبل از شروع کردن مباحث اصلی این جلسه باید به طراحی رابط کاربری میپرداختیم، اما چون آموزش ما متنی است، طراحی رابط کاربری را به عهده خودتان گذاشتیم و در این جلسات به مفاهیم اصلی تر و کاربردی تری از اپلیکیشن میپردازیم.
شروع آموزش:
- برای تبدیل صدا به متن باید ابتدا کتابخانه phone را از لیست کتابخانه های بیسیک فور اندرید تیک بزنید.
- سپس این کتابخنه را تعریف میکنیم:
۱ |
Private voicefa,voiceen As VoiceRecognition |
دقت کنید که چون ما میخواهیم هم از قابلیت فارسی و هم انگلیسی این کتابخانه استفاده کنیم، ما دوتا متغیر برای این کتابخانه تعریف کردیم.
- در ادامه کتابخانه را راه اندازی میکنیم:
۱ ۲ |
voicefa.Initialize("voicefa") voiceen.Initialize("voiceen") |
در ادامه باید دکمه ای تعریف کنیم تا بتوانیم در آن از این کتابخانه استفاده کنیم. ( حالا نیاز هم نیست که حتما دکمه باشه یا چیزی دیگه ای. مهم این است که هرجا نیاز شد این کتابخانه را راه اندازی و از آن استفاده کنید. )
- با نوشتن این سه خط دستور، برنامه شروع به گوش دادن به میکروفون گوشی میکند:
۱ ۲ ۳ |
voicefa.Language="fa" voicefa.Prompt="متن خود را بگویید..." voicefa.Listen |
توضیحات خطوط بالا:
- خط اول زبان مربوط به کتابخانه است ( زبانی که میخواهید صحبت کنید. )
- خط دوم متنی است که کاربر با دیدن آن مطلع میشود که باید سخن بگوید.
- خط سوم، کتابخانه شروع به گوش کردن به میکروفون میکند.
- این هم نمونه برای زبان انگلیسی:
۱ ۲ ۳ |
voiceen.Language="en" voiceen.Prompt="Speaking..." voiceen.Listen |
با استفاده ازاین دستورات، کادر شناسایی صدای گوگل باز میشود و درصورتی که آنلاین باشید، گفتار شما را میشنود. اما باید این گفتار را به شکل متن درآورد تا بتوان از آن استفاده کرد.
کتابخانه VoiceRecognition دارای یک ساب نتیجه است که وقتی صدا کامل دریافت شد، برناه به این ساب میرود و دستورات را اجرا میکند. این ساب بسیار مهم است و نتیجه کار در این سایت به نمایش گذاشته میشود.
- ساب مربوطه:
۱ ۲ ۳ |
Private Sub voiceen_Result (Success As Boolean, Texts As List) End Sub |
- سپس در این ساب می آییم و صدای ضبط شده را پردازش میکنیم.
- ابتدا جمله یا کلمه یا جمله های گفته شده را اینگونه نشان کاربر میدهیم تا بداند که برنامه چه صداهایی را شناسایی کرده و بتوان از آن استفاده کرد.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ |
Private Sub voiceen_Result (Success As Boolean, Texts As List) If Success=True Then Private lbl_text As Label lbl_text.Initialize("") lbl_text.Text = Texts.Get(۰) Else snac.Show("صدا نامفهوم بود. دوباره سعی کنید",Colors.RGB(۰, ۱۳۱, ۱۴۳),Colors.Black,snac.Down) End If End Sub |
توضیحات کدهای بالا:
در ساب بالا گفتیم که اگر صدا با موفقیت دریافت شد، بیا و یک لیبل تعریف کن و لیبل را راه اندازی کن و در ادامه متن لیبل را برابر گفتاری که دریافت شده قرار بده.
دقت کنید که پارامتر وردی را حتما ۰ بگذارید تا کل کلمه یا جمله محاسه شود.
و در ادامه گفتیم که درغیر این صورت یعنی اینکه اگر جمله مفهوم نبود، یک اسنک بار بساز و متنی را نمایش بده.
برای زبان فارسی هم به همین شکل عمل میکنیم منتها چه جوری برنامه ساب زبان فارسی را از انگلیسی جدا میکند؟
به این دو خط که قبلا تعریف کردیم نگاه کنید:
۱ ۲ |
voicefa.Initialize("voicefa") voiceen.Initialize("voiceen") |
هرکدام از این متغیرها یک نام رویداد جداگانه دارند که به در نام ساب نتیجه می آید و برنامه با دستور voiceen.Language=”en” میفهمد که متن گفته شده به چه زبانی است و بعد از اینکه گفتار تمام میشود، با توجه به زبان گفتار، به سراغ یکی از این ساب ها میرود.
در ادامه خواهیم گفت اسنک بار چیست و به چه دردی میخورد.
اسنک بار را میتوان جایگزین توست مسیج کرد. همان دستور ToastMessageShow اما اسنک بار شمایل گرافیکی جالبی دارد که برنامه شما را زیباتر میکند.
ساخت اسنک بار:
- ابتدا کتابخانه مربوطه را با نام Snackbar در بیسیک تک میزنیم.
- سپس آن را تعریف میکنیم:
۱ |
Private snac As Snackbar |
- بعد از تعریف کتابخانه، آن را راه اندازی میکنیم:
۱ |
snac.Initialize |
- حالا در هرجایی که خواستیم میتوانیم آن را به راحتی فراخوانی کنیم. مثل این خط:
۱ |
snac.Show("متن کپی شد",Colors.RGB(۰, ۱۳۱, ۱۴۳),Colors.Black,snac.Down) |
پارامتر اول متن اسنک بار، پارامتر دوم رنگ پس زمینه اسنک بار، پارامتر سوم رنگ متن و در پارامتر چهارم تعیین میکنید که اسنک بار از بالای صفحه نمایش داده شود یا از پایین صفحه
حالا میخواهیم درمورد کتابخانه RuntimePermissions و نقشش در ذخیره دیتا در دیتابیس آفلاین صحبت کنیم.
در اندروید ۶ و بالاتر کتابخانه File برای کارکردن با حافظه داخلی گوشی منسوخ شده و جایگزین آن کتابخانه RuntimePermissions شده است.
این کتابخانه به علاوه این که دسترسی کار با سخت افزارهای گوشی را از کاربر میگیرد ( مثل حافظه، GPS، پیامک هاو… ) میتوان از آن هم برای کپی کردن دیتابیس آفلاین داخل گوشی هم استفاده کرد.
اگر جلسه قبل را به دقت خوانده باشید، ما برای ایجاد پوشه در حافظه و ایجاد پایگاه داده آفلاین در پوشه، از این کتابخانه استفاده کردیم.
مسیری که در این کتابخانه ایجاد شده است، مسیر استاندارد خود اندروید است. مسیر این کتابخانه Storage Internal / Android / data / package name زمانی که متد GetSafeDirDefaultExternal(“”) صدا زده میشود، کتابخانه یک پوشه با نام پکیج نیم برنامه در مسیری که گفته شد میسازد، و حالا میتوانید درون این پوشه، پوشه بسازید یا دیتابیس کپی کنید و یا… بدون خطا یا فورس کلوز.
آموزش را همینجا به پایان می رسانیم، همراه ما باشید با ادامه آموزش ها …
مشکلی یا سوالی داشتید میتوانید در بخش پرسش و پاسخ سایت، سوال خود را بپرسید.
موفق باشید.
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید