bha*_*thi 59 android text-to-speech
我是Android平台的新手.现在我正在努力.TTS(Text to Speech)如果我在TextArea中输入文本,我希望在单击"说出"按钮时将其转换为语音.
谁能帮我吗?
小智 89
Android 1.6+内置了文本到语音.这是一个如何做到的简单示例.
TextToSpeech tts = new TextToSpeech(this, this);
tts.setLanguage(Locale.US);
tts.speak("Text to say aloud", TextToSpeech.QUEUE_ADD, null);
Run Code Online (Sandbox Code Playgroud)
更多信息:http://android-developers.blogspot.com/2009/09/introduction-to-text-to-speech-in.html
以下是有关如何从Android SDK Manager下载示例代码的说明:
启动Android SDK Manager.
一个.在Windows上,双击Android SDK目录根目录下的SDK Manager.exe文件.
湾 在Mac或Linux上,打开Android SDK中tools /目录的终端,然后执行android sdk.
展开最新Android平台的软件包列表.
/ SDK /样品/ Android的版本/
(i.e. \android-sdk-windows\samples\android-16\ApiDemos\src\com\example\android\apis\app\TextToSpeechActivity.java)
Run Code Online (Sandbox Code Playgroud)
小智 59
package com.example.texttospeech;
import java.util.Locale;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences.Editor;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
String text;
EditText et;
TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et=(EditText)findViewById(R.id.editText1);
tts=new TextToSpeech(MainActivity.this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
// TODO Auto-generated method stub
if(status == TextToSpeech.SUCCESS){
int result=tts.setLanguage(Locale.US);
if(result==TextToSpeech.LANG_MISSING_DATA ||
result==TextToSpeech.LANG_NOT_SUPPORTED){
Log.e("error", "This Language is not supported");
}
else{
ConvertTextToSpeech();
}
}
else
Log.e("error", "Initilization Failed!");
}
});
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
if(tts != null){
tts.stop();
tts.shutdown();
}
super.onPause();
}
public void onClick(View v){
ConvertTextToSpeech();
}
private void ConvertTextToSpeech() {
// TODO Auto-generated method stub
text = et.getText().toString();
if(text==null||"".equals(text))
{
text = "Content not available";
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}else
tts.speak(text+"is saved", TextToSpeech.QUEUE_FLUSH, null);
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="177dp"
android:onClick="onClick"
android:text="Button" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="81dp"
android:ems="10" >
<requestFocus />
</EditText>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
快速测试 TTS 系统的简约示例:
private TextToSpeech textToSpeechSystem;
@Override
protected void onStart() {
super.onStart();
textToSpeechSystem = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
String textToSay = "Hello world, this is a test message!";
textToSpeechSystem.speak(textToSay, TextToSpeech.QUEUE_ADD, null);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
如果您不使用本地化消息textToSpeechSystem.setLanguage(..)也很重要,因为您的用户可能并非都将英语设置为他们的默认语言,因此单词的发音将是错误的。但是对于一般测试 TTS 这个片段就足够了
相关链接:https : //developer.android.com/reference/android/speech/tts/TextToSpeech