آموزش برنامه نویسی در مشهد

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

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

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

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

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

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

تنظیمات 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 وارد صفحه دوم میشوید که از شما میخواهد تا صحبت کنید. در نهایت گفتار خود را به صورت متن در کادر مشاهده خواهید کرد.

خروج از نسخه موبایل