スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Android テキストの音声読み上げ(TextToSpeech)

テキストの音声読み上げ(TextToSpeech)

・TextToSpeechは音声でテキストを読み上げる機能で、Android1.6から搭載されています。
 今回は、音声の速度、ピッチの変更を可能とします。
○TextToSpeechクラス


package text.speech;
import java.util.Locale;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class TextToSpeech extends Activity implements
android.view.View.OnClickListener, OnInitListener {
final private //遅い①
final private //普通
final private //早い
final private //低い
final private //普通
final private //高い
private Button btnSpeech;②
private Button btnSlow;
private Button btnNormal;
private Button btnFast;
private Button btnLowPitch;
private Button btnNormalPitch;
private Button btnHighPitch;
private EditText mTextEdit;
private android.speech.tts.TextToSpeech mSpeech;③
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// TextToSpeech(Context context, TextToSpeech.OnInitListener listener)
// 第一引数はContextとなるthis、第二引数はOnInitリスナー。onInitを実装しているthis
mSpeech = new android.speech.tts.TextToSpeech(this, this);④
// 入力テキストの抽出
mTextEdit = (EditText) findViewById(R.id.text_et);
// ボタンのClickListenerの登録⑤
btnSpeech = (Button) findViewById(R.id.execute_btn);
btnSpeech.setOnClickListener(this);
btnSlow = (Button) findViewById(R.id.ButtonSlow);
btnSlow.setOnClickListener(this);
btnNormal = (Button) findViewById(R.id.ButtonNormal);
btnNormal.setOnClickListener(this);
btnFast = (Button) findViewById(R.id.ButtonFast);
btnFast.setOnClickListener(this);
btnLowPitch = (Button) findViewById(R.id.ButtonLowPitch);
btnLowPitch.setOnClickListener(this);
btnNormalPitch = (Button) findViewById(R.id.ButtonNormalPitch);
btnNormalPitch.setOnClickListener(this);
btnHighPitch = (Button) findViewById(R.id.ButtonHighPitch);
btnHighPitch.setOnClickListener(this);
}
public void onDestroy() {
super.onDestroy();
mSpeech.shutdown();
}
//onClickイベントvにオブジェクトが格納される
public void onClick(View v) {⑤-1
if (btnSpeech == v) speechText();⑥
if (btnSlow == v) mSpeech.setSpeechRate(SP_SLOW); // 速度設定⑦
if (btnNormal == v) mSpeech.setSpeechRate(SP_NORMAL);
if (btnFast == v) mSpeech.setSpeechRate(SP_FAST);
if (btnLowPitch == v) mSpeech.setPitch(PH_LOW); // ピッチ設定⑧
if (btnNormalPitch == v) mSpeech.setPitch(PH_NORMAL);
if (btnHighPitch == v) mSpeech.setPitch(PH_HIGH);
}
// テキストの読み上げ
private void speechText() {
String string = mTextEdit.getText().toString();⑨
// 読み上げ開始
mSpeech.speak(string, android.speech.tts.TextToSpeech.QUEUE_FLUSH, null);⑩
}
// statusは成功の場合:TextToSpeech.SUCCESSが、失敗の場合:TextToSpeech.ERRORが渡されます。
public void onInit(int status) {
Log.d( & quot; TextToSpeech & quot;, & quot; onInit & quot;);
if (status == android.speech.tts.TextToSpeech.SUCCESS) {
mSpeech.setLanguage(Locale.ENGLISH);⑪
}
}
}



①音声速度、ピッチの値を宣言します。この値で速度、ピッチを制御します。
②各Button用の変数を宣言
③TextToSpeechの変数
④TextToSpeechを生成します。第一引数はContextとなるthis、第二引数はonInitリスナーを実装しているthisとなる
⑤全てのButtonへonClickを実装しているthisをOnClickリスナーとして設定
  OnClick先で押下ボタンを判断し、制御する。
⑤-1 onClickの引数Viewに、押下したボタンが格納される
⑥btnSpeechボタン押下時に、テキスト読み込みメソッドを実行する。
⑦setSpeechRateメソッドで音声速度を設定します
⑧setPitchメソッドで音声のピッチを設定します
⑨Editから入力した文字列を抽出する
⑩speakメソッドでテキストの読みあげを開始する。
  第一引数は読み上げるテキストを設定、第二引数はキューを設定。
  キューは以下の通りです。
  →TextToSpeech.QUEUE_ADD:再生キューへエントリを追加
  →TextToSpeech.QUEUE_FLUSH:再生待ちのエントリをドロップしてエントリを実行
  第三引数には、実行後に呼び出されるメソッドの引数に渡す値を設定(HashMap形式)。不要の場合はNull
⑪onInitメソッドは初期処理時に実行されます。setLanguageでロケールを設定します。




スポンサーサイト

テーマ : android
ジャンル : コンピュータ

コメントの投稿

非公開コメント

おすすめアプリ
カテゴリ
最新記事
リンク
アクセスカウンター
アクセス解析
imobile
i-mobile
i-mobile
i-mobile
i-mobile
i-mobile
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Amazon
Androidお勧め参考書
EC studio
商品
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。