[Android] 「先生!ドロイド君が話すんです!」(;゚Д゚))))

| トラックバック(0) |

Android 1.6 から Text-to-speech (TTS) 機能がサポートされました!

テキストを音声に変換して再生することができます。

さっそく、サンプルを作ってみましたので、是非お試しください。

TTSDemo.png

 ※要Android1.6 (API Level 4)

※紙面の都合上、コードが短くなるようにハードコードを含めて、推奨しない書き方をしておりますが、ご理解ください。

 

サンプルソースコード

package com.adakoda.android.ttsdemo;
import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.adakoda.android.ttsdemo.R.id;
public class TTSDemoActivity extends Activity implements
        TextToSpeech.OnInitListener {
    private EditText mText;
    private Button mClear;
    private Button mSpeak;
    private TextToSpeech mTts;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mText = (EditText) findViewById(id.text);
        mClear = (Button)findViewById(id.clear);
        mClear.setOnClickListener(mClearClickListener);
        mSpeak = (Button)findViewById(id.speak);
        mSpeak.setOnClickListener(mSpeakClickListener);
        mSpeak.setEnabled(false);
        
        mTts = new TextToSpeech(this, this);
    }
    @Override
    public void onInit(int status) {
        boolean success = false;
        if (status == TextToSpeech.SUCCESS) {
            Locale locale = Locale.ENGLISH;
            if (mTts.isLanguageAvailable(locale) >=
                    TextToSpeech.LANG_AVAILABLE) {
                mTts.setLanguage(locale);
                success = true;
            }
        }
        if (success) {
            mSpeak.setEnabled(true);
        } else {
            Toast.makeText(this, "Failed to initialize",
                Toast.LENGTH_LONG).show();
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mTts != null) {
            mTts.shutdown();
        }
    }
    private View.OnClickListener mClearClickListener =
            new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mText.setText("");
        }
    };
    private View.OnClickListener mSpeakClickListener =
            new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String textString = mText.getText().toString();
            if (textString.length() > 0) {
                if (mTts.isSpeaking()) {
                    mTts.stop();
                }
                mTts.setSpeechRate((float)(100.0f /100.0f));
                mTts.speak(textString, TextToSpeech.QUEUE_FLUSH, null);
            }
        }
    };
}

 

あわせて読みたい

 

※追記:多少ですが見やすくなるよう変更しました・・・

トラックバック(0)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/316

Android Advent Calendar 2011

2012年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29