綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[資料] Android怎麼實現語音朗讀

[複製連結] 查看: 2474|回覆: 5|好評: 0
跳轉到指定樓層
樓主
暗桌之光 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2011-6-14 15:55

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
在Android 實現語音功能只需要幾段簡單的代碼即可完成。
  1. package com.terry;

  2. import java.util.Locale;

  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.speech.tts.TextToSpeech;
  6. import android.speech.tts.TextToSpeech.OnInitListener;
  7. import android.util.Log;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11. import android.widget.EditText;

  12. public class speechActivity extends Activity {
  13.     private TextToSpeech mSpeech;
  14.     private Button btn;

  15.     private EditText mEditText;

  16.     /** Called when the activity is first created. */
  17.     @Override
  18.     public void onCreate(Bundle savedInstanceState) {
  19.         super.onCreate(savedInstanceState);
  20.         setContentView(R.layout.main);

  21.         btn = (Button) findViewById(R.id.Button01);
  22.         mEditText = (EditText) findViewById(R.id.EditText01);
  23.         btn.setEnabled(false);
  24.         mSpeech = new TextToSpeech(this, new OnInitListener() {

  25.             @Override
  26.             public void onInit(int status) {
  27.                 // TODO Auto-generated method stub
  28.                 if (status == TextToSpeech.SUCCESS) {
  29.                     int result = mSpeech.setLanguage(Locale.ENGLISH);
  30.                     if (result == TextToSpeech.LANG_MISSING_DATA
  31.                             || result == TextToSpeech.LANG_NOT_SUPPORTED) {
  32.                         Log.e("lanageTag", "not use");
  33.                     } else {
  34.                         btn.setEnabled(true);
  35.                         mSpeech.speak("i love you", TextToSpeech.QUEUE_FLUSH,
  36.                                 null);
  37.                     }
  38.                 }
  39.             }
  40.         });

  41.         btn.setOnClickListener(new OnClickListener() {

  42.             @Override
  43.             public void onClick(View v) {
  44.                 // TODO Auto-generated method stub
  45.                 mSpeech.speak(mEditText.getText().toString(),
  46.                         TextToSpeech.QUEUE_FLUSH, null);
  47.             }
  48.         });

  49.     }

  50.     @Override
  51.     protected void onDestroy() {
  52.         // TODO Auto-generated method stub
  53.         if (mSpeech != null) {
  54.             mSpeech.stop();
  55.             mSpeech.shutdown();
  56.         }
  57.         super.onDestroy();
  58.     }
  59. }
複製代碼
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 5碎鑽 +6 幫助 +4 收起 理由
不知火羽 + 1 讚一個!
chiu88 + 1
idvtw + 1 + 1 非常讚
jamesliao66 + 1 讚一個!
y776 + 5 支持一下

查看全部評分

收藏收藏4 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
沙發
danny9087 | 收聽TA | 只看該作者
發表於 2011-11-10 19:52
package com.terry;

import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class speechActivity extends Activity {
    private TextToSpeech mSpeech;
    private Button btn;

    private EditText mEditText;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btn = (Button) findViewById(R.id.Button01);
        mEditText = (EditText) findViewById(R.id.EditText01);
        btn.setEnabled(false);
        mSpeech = new TextToSpeech(this, new OnInitListener() {

            @Override
            public void onInit(int status) {
                // TODO Auto-generated method stub
                if (status == TextToSpeech.SUCCESS) {
                    int result = mSpeech.setLanguage(Locale.ENGLISH);
                    if (result == TextToSpeech.LANG_MISSING_DATA
                            || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                        Log.e("lanageTag", "not use");
                    } else {
                        btn.setEnabled(true);
                        mSpeech.speak("i love you", TextToSpeech.QUEUE_FLUSH,
                                null);
                    }
                }
            }
        });

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mSpeech.speak(mEditText.getText().toString(),
                        TextToSpeech.QUEUE_FLUSH, null);
            }
        });

    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        if (mSpeech != null) {
            mSpeech.stop();
            mSpeech.shutdown();
        }
        super.onDestroy();
    }
}

評分

參與人數 1幫助 +1 收起 理由
idvtw + 1

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
jamesliao66 | 收聽TA | 只看該作者
發表於 2012-1-30 00:30
真好...昨天才在想文字轉語音要怎麼用...謝謝啦
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
g6a2m1e2 | 收聽TA | 只看該作者
發表於 2012-9-10 21:38
這樣的話要有語音檔嗎
還是自己用麥克風講話他就會轉成文字了?

點評

其實不需要 他是用系統內建的TextToSpeech物件來實現語音朗讀  發表於 2012-9-12 01:28
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
dennyding | 收聽TA | 只看該作者
發表於 2012-9-28 13:54
可以整個Project包,  一起Share嗎?
我貼在project裏,  有一推error.   看來是跟Layout有關.
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
dennyding | 收聽TA | 只看該作者
發表於 2012-9-28 15:05
剛剛調出來. 只講英文.  請問要講中文要怎麼改?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則