Android Speech - 语音识别与文本转语音库快速入门指南
Android Speech 是一个由 gotev 开发的开源库,旨在简化在 Android 应用中集成 Google 语音识别和文本转语音功能的过程。通过提供简洁的 API,开发者可以轻松实现语音交互功能,无需深入研究复杂的系统调用。
项目快速启动
添加依赖
在项目的 build.gradle (Module) 文件中添加以下依赖项:
dependencies {
implementation 'net.gotev:speech:x.y.z' // 替换x.y.z为最新版本号
}
然后同步 Gradle 项目。
基本初始化
在 Activity 中进行库的初始化:
public class YourActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
Speech.init(this, getPackageName());
}
@Override
protected void onDestroy() {
// 防止内存泄漏
Speech.getInstance().shutdown();
}
}
语音识别功能实现
启动语音识别
try {
// 确保已获得 android.permission.RECORD_AUDIO 权限
Speech.getInstance().startListening(new SpeechDelegate() {
@Override
public void onStartOfSpeech() {
Log.i("speech", "语音识别已激活");
}
@Override
public void onSpeechRmsChanged(float value) {
Log.d("speech", "当前RMS值: " + value);
}
@Override
public void onSpeechPartialResults(List<String> results) {
StringBuilder str = new StringBuilder();
for (String res : results) {
str.append(res).append(" ");
}
Log.i("speech", "部分结果: " + str.toString().trim());
}
@Override
public void onSpeechResult(String result) {
Log.i("speech", "最终结果: " + result);
}
});
} catch (SpeechRecognitionNotAvailable exc) {
Log.e("speech", "当前设备不支持语音识别!");
} catch (GoogleVoiceTypingDisabledException exc) {
Log.e("speech", "需要启用Google语音输入!");
}
停止监听
Speech.getInstance().stopListening();
文本转语音功能
基本文本转语音
Speech.getInstance().say("要说的话");
带回调的文本转语音
Speech.getInstance().say("要说的话", new TextToSpeechCallback() {
@Override
public void onStart() {
Log.i("speech", "语音播报开始");
}
@Override
public void onCompleted() {
Log.i("speech", "语音播报完成");
}
@Override
public void onError() {
Log.i("speech", "语音播报出错");
}
});
语音识别进度动画
布局中添加进度视图
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/linearLayout">
<net.gotev.speech.ui.SpeechProgressView
android:id="@+id/progress"
android:layout_width="120dp"
android:layout_height="150dp"/>
</LinearLayout>
自定义进度条颜色
int[] colors = {
ContextCompat.getColor(this, android.R.color.black),
ContextCompat.getColor(this, android.R.color.darker_gray),
ContextCompat.getColor(this, android.R.color.black),
ContextCompat.getColor(this, android.R.color.holo_orange_dark),
ContextCompat.getColor(this, android.R.color.holo_red_dark)
};
speechProgressView.setColors(colors);
语言和语音设置
获取支持的语言和语音
// 获取支持的语音识别语言
Speech.getInstance().getSupportedSpeechToTextLanguages(listener);
// 获取支持的文本转语音声音
List<Voice> supportedVoices = Speech.getInstance().getSupportedTextToSpeechVoices();
设置语言和语音
// 设置语音识别语言
Speech.getInstance().setLocale(locale);
// 设置文本转语音声音
Speech.getInstance().setVoice(voice);
日志配置
启用调试日志
Logger.setLogLevel(LogLevel.DEBUG);
自定义日志输出
Logger.setLoggerDelegate(new Logger.LoggerDelegate() {
@Override
public void error(String tag, String message) {
// 自定义错误日志处理
}
@Override
public void error(String tag, String message, Throwable exception) {
// 自定义带异常的日志处理
}
@Override
public void debug(String tag, String message) {
// 自定义调试日志处理
}
@Override
public void info(String tag, String message) {
// 自定义信息日志处理
}
});
权限处理
在使用语音识别功能前,需要确保应用已获得录音权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.RECORD_AUDIO},
PERMISSIONS_REQUEST);
}
最佳实践建议
- 用户体验优化:在开始语音识别时显示进度动画,给用户明确的反馈
- 错误处理:妥善处理设备不支持语音识别的情况,提供友好的用户提示
- 权限管理:在需要时请求录音权限,并解释权限用途
- 资源释放:在Activity销毁时调用
shutdown()方法释放资源 - 多语言支持:利用库提供的多语言支持功能,为不同地区用户提供本地化体验
通过Android Speech库,开发者可以快速为应用添加高质量的语音交互功能,大大提升用户体验和应用价值。该库封装了复杂的底层实现,让语音功能的集成变得简单高效。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




