您的位置:首页 > 其它

TextToSpeech文本转为语音

2015-04-24 10:56 369 查看
转自http://flycatdeng.iteye.com/blog/1827245

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/speechTxt"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:text="you are very good !" />

<Button

android:id="@+id/speechBtn"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:layout_marginTop="22dp"

android:text="text to speech" />

</RelativeLayout>

MainAty.java

Java代码


package fly.aty;

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.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

public class MainAty extends Activity implements OnClickListener, OnInitListener{

private Button speechBtn; // 按钮控制开始朗读

private TextView speechTxt; // 需要朗读的内容

private TextToSpeech textToSpeech; // TTS对象

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

speechBtn = (Button) findViewById(R.id.speechBtn);

speechBtn.setOnClickListener(this);

speechTxt = (TextView) findViewById(R.id.speechTxt);

textToSpeech = new TextToSpeech(this, this); // 参数Context,TextToSpeech.OnInitListener

}

/**

* 用来初始化TextToSpeech引擎

* status:SUCCESS或ERROR这2个值

* setLanguage设置语言,帮助文档里面写了有22种

* TextToSpeech.LANG_MISSING_DATA:表示语言的数据丢失。

* TextToSpeech.LANG_NOT_SUPPORTED:不支持

*/

@Override

public void onInit(int status) {

if (status == TextToSpeech.SUCCESS) {

int result = textToSpeech.setLanguage(Locale.US);

if (result == TextToSpeech.LANG_MISSING_DATA

|| result == TextToSpeech.LANG_NOT_SUPPORTED) {

Toast.makeText(this, "数据丢失或不支持", Toast.LENGTH_SHORT).show();

}

}

}

@Override

public void onClick(View v) {

if (textToSpeech != null && !textToSpeech.isSpeaking()) {

textToSpeech.setPitch(0.5f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规

textToSpeech.speak(speechTxt.getText().toString(),

TextToSpeech.QUEUE_FLUSH, null);

}

}

@Override

protected void onStop() {

super.onStop();

textToSpeech.stop(); // 不管是否正在朗读TTS都被打断

textToSpeech.shutdown(); // 关闭,释放资源

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: