آموزش نحوه تبدیل گفتار به متن در اندروید

تبدیل گفتار به متن در اندروید مانند بسیاری از قابلیت ها و سرویس های اندروید هنوز برای بسیاری از توسعه دهندگان اپلیکیشن های اندروید به صورت دست نخورده باقی مانده است. به عنوان مثال، قابلیت یکپارچه سازی سرویس های تشخیص گفتار به متن در Android SDK یکی از نمونه های بارز در این مورد می باشد. در حال حاضر برنامه های شناخته شده ای ماند Google Keep و any.DO از قابلیت تبدیل گفتار به متن استفاده نموده و سردمداران برنامه نویسی از قبیل مایکروسافت و اپل و گوگل بر روی این قابلیت تمرکز زیادی داشته و نرم افزارهای قدرتمندی از قبیل Google cortana و Siri را توسعه داده اند. آکادمی برنامه نویسان؛ برگزارکننده دوره های آموزش اندروید در مشهد در ادامه به بررسی این موضوع پرداخته و نحوه تبدیل گفتار به متن در برنامه های اندروید را آموزش خواهد داد.

اندروید به صورت ذاتی قابلیت تبدیل گفتار به متن را فراهم نموده و در دسترس قرار داده است، پس چرا از آن استفاده نکنیم؟ در این مطلب ما به شما خواهیم گفت که چگونه Android’s speech و Text API را با هم تلفیق کنید تا از این قابلیت عالی و فوق العاده در برنامه هایتان استفاده نمایید. در حالت کلی، عمل تشخیص صدا و گفتا ر و تبدیل آن به متن به کمک Recognizerintent انجام میشود که استفاده از آن به صورت آفلاین بوده و نیازی به اینترنت در آن وجود ندارد.

پیش نیازها برای تبدیل گفتار به متن در اندروید

برای شروع این کار لازم است به چند موضوع مهم توجه داشته باشید که عبارتند از:

  • ابتدا لازم است Android Studio IDE روی رایانه شخصی یا MAC نصب شده باشد.
  • این برنامه از شبیه ساز پشتیبانی نمی کند . به همین دلیل لازم است گوشی هوشمند یا تبلت اندرویدی در اختیار داشته باشید.
  • دانش ابتدایی درباره لایه بندی برنامه های اندرویدی و چرخه حیات برنامه ها داشته باشید. شناخت و آشنایی ابتدایی با برنامه نویسی اندروید برای استفاده از قابلیت تبدیل گفتار به متن در اندروید و پیاده سازی آن در اپلیکیشن های مورد نظر ضروری می باشد.

پروژه جدید ایجاد کنید

  • Android Studio را باز کنید و یک پروژه جدید به نام speech to text  و دامنه شرکت خود ایجاد کنید. به عنوان مثال، example.com
  • Next را کلیک نموده و Min SDK را انتخاب نمایید. سایر گزینه ها به صورت پیش فرض قرار دهید و نیاز به تغییر در آنها نیست. سپس NEXT را کلیک نموده و Blanck Activity را انتخاب کنید.
  • برای activity مورد نظر نام MainActivity را انتخاب و سپس next را کلیک کنید.
  • سایر موارد را به صورت پیش فرض قرار دهید و نیاز به تغییرات در آنها نیست و در نهایت روی finish کلیک کنید.

تنظیمات activity layout

ابتدا یک imagebutton برای نشان دادن میکروفون و یک textview برای نمایش گفتار تبدیل شده به متن به آن اضافه کنید. برای پشتیبانی از متن های طولانی تر و پیاده سازی قابلیت اسکرول کردن در textview به صورت زیر عمل کنید.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.stacktips.speechtotext.MainActivity">

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_above="@+id/btnSpeakContainer"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="20dp"
        android:padding="20dp">

        <TextView
            android:id="@+id/voiceInput"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </ScrollView>

    <LinearLayout
        android:id="@+id/btnSpeakContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#f5f5f5"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:padding="20dp">

        <ImageButton
            android:id="@+id/btnSpeak"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"
            android:padding="16dp"
            android:scaleType="fitCenter"
            android:src="@mipmap/ic_microphone_2" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/btnSpeak"
            android:layout_margin="10dp"
            android:text="@string/hint" />
    </LinearLayout>
</RelativeLayout>

پیاده سازی برنامه تشخیص صدا و تبدیل به متن در android activity

قطعه کد زیر را در mainactivity.java اضافه کنید.

package com.stacktips.speechtotext;

import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    private static final int REQ_CODE_SPEECH_INPUT = 100;
    private TextView mVoiceInputTv;
    private ImageButton mSpeakBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mVoiceInputTv = (TextView) findViewById(R.id.voiceInput);
        mSpeakBtn = (ImageButton) findViewById(R.id.btnSpeak);
        mSpeakBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                startVoiceInput();
            }
        });
    }

    private void startVoiceInput() {
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
        intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Hello, How can I help you?");
        try {
            startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
        } catch (ActivityNotFoundException a) {

        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
            case REQ_CODE_SPEECH_INPUT: {
                if (resultCode == RESULT_OK && null != data) {
                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                    mVoiceInputTv.setText(result.get(0));
                }
                break;
            }

        }
    }
}

در قطعه کد بالا، ما یک Intent به نام recognizerintent راه اندازی کردیم که به عنوان ورودی گفتار را دریافت نموده و آن را به speech recognizer ارسال میکند. این کار از طریق ACTION_RECOGNIZE_SPEECH انجام میشود. در نهایت با کد REQ_CODE_SPEECH_INPUT متن مربوطه به خروجی ارسال و در کادر مربوطه نمایش داده میشود.

پس از اتمام این کار، برنامه را اجراکنید. با ضربه زدن روی دکمه mic وارد صفحه دوم میشوید که از شما میخواهد تا صحبت کنید. در نهایت گفتار خود را به صورت متن در کادر مشاهده خواهید کرد.

تبدیل گفتار به متن اندروید

ورکشاپ رایگان دوره های تخصصی برنامه نویسی

شما این فرصت را دارید، با تکمیل فرم زیر، قبل از انتخاب دوره آموزشی مناسب خود، در ورکشاپ رایگان دوره های تخصصی برنامه نویسی شرکت کنید

درباره‌ی برنامه نویسان

همچنین ببینید

آموزش اندروید

گزارش دوره آموزش اندروید – جلسه هفتم

در جلسه هفتم از دوره آموزش اندروید مهندس آذرنیوا مدرس دوره به آموزش ساخت اپلیکیشن تعاملی …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *