رفتن به مطلب

آموزش تبدیل متن به صدا


کسری نعمتی مهمان

ارسال‌های توصیه شده

کسری نعمتی مهمان

سلام دوستان.تو این آموزش یاد میگیرید چطور یک متن رو بدین و براتون خونده بشه و چیز جالبیه . برای این کار به کتابخونه TTS نیاز داریم.

اول کتابخونه رو تعریف میکنیم

Sub Process_Globals
   Dim TTS1 As TTS
End Sub

Sub Globals
   Dim barPitch As SeekBar
   Dim barSpeechRate As SeekBar
   Dim btnSpeak As Button
   Dim EditText1 As EditText
   Dim spnrLanguages As Spinner
End Sub

این هارو که تعریف کردیم و مشخصه چیه.جلو تر میبینیم که چرا تعریف شدن

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout("test")
spnrLanguages.AddAll(Array As String("english", "persian", "germany"))

End Sub

ما تو spinner بالا 3 تا زبان قرار دادیم که البته پیش فرض همون انگلیسیه

خب این کتابخونه فقط یک Event داره که همونطور که میدونید با زدن space + tab این event ها میان.اسم این event هم هست Ready

Sub TTS1_Ready (Success As Boolean)
   If Success Then

       For i = 0 To Activity.NumberOfViews - 1
           Activity.GetView(i).Enabled = True
       Next
       btnSpeak_Click 
   Else
       Msgbox("eror baraye intialize kardan","title")
   End If
End Sub

ما اینجا گفتیم که اگه آماده شد تمام view هایی که حالا شاید تو Designer غیر فعال کردیم رو فعال کن.بعدشم که گفتیم btnSpeak_Click تا دستوراتی که تو sub btnSpeak_Click نوشتیم رو اینجا انجام بده

Sub Activity_Resume
   If TTS1.IsInitialized = False Then
       TTS1.Initialize("TTS1")
   End If
End Sub

ما در کد بالا intialize بودن کتابخونه رو چک کردیم که اگه نبود intialize بشه اینجا

Sub Activity_Pause (UserClosed As Boolean)
   TTS1.Release
End Sub

خب این دستور release که کتابخونه TTS داره برای پخش کردن صدا به کار میره که ترجمه اش به فارسی هم همینه

Sub btnSpeak_Click
   If EditText1.Text.Length > 0 Then
       TTS1.Speak(EditText1.Text, True)
       EditText1.SelectAll
   End If
End Sub

ما در کد بالا میگیم که اگه مقدار رشته edittext از 0 بیشتر بود ( یعنی کاربر یه چیزی توش نوشته باشه ) البته راه های دیگه ای برای اینکار هست

بیاد TTS1.speak یعنی شروع کنه به خوندن.اون قسما هم که نوشته EditText1.SelectAll میایم کل متن این edittext رو میگیریم

Sub barSpeechRate_ValueChanged (Value As Int, UserChanged As Boolean)
   If UserChanged Then
       tts1.SpeechRate = Value / 10
   End If
End Sub

خب اولا که حالت Defualt این speechRate ما که برای سرعت گفتار به کار میره 1 هست برای همین ما برای اینکه Value ها بین 1 تا 10 باشه تقسیم بر 10 میکنیم

Sub barPitch_ValueChanged (Value As Int, UserChanged As Boolean)
   If UserChanged Then
       tts1.Pitch = Value / 10
   End If
End Sub

Sub spnrLanguages_ItemClick (Position As Int, Value As Object)
   If tts1.SetLanguage(Value, "") = False Then
       ToastMessageShow("Language data not found.", True)
       Return
   End If
End Sub

که البته این کتابخونه فقط انگلیسی پشتیبانی میکنه تو کد بالا فقط خواستم خاصیت setLanguage گفته بشه

تا آموزش دیگه عزت زیاد مشتی گلی ها *give_heart*

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 6 ماه بعد...

ممنون. خیلی کاربردیه.

پرچم گیلانیا بالاست. ***solh***

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...