Project Icon

android-speech

简化的Android语音识别和文字转语音功能

android-speech库,当前版本x.y.z,为Android开发者提供便捷、高效的语音识别与文字转语音解决方案。该库支持简单的初始化设置和API调用,提供多语言和多种声音选项,配备有自定义进度动画。

项目简介

Android Speech 是一个简单易用的 Android 语音识别和文本转语音的库。它提供了精简的 API,使开发者能够轻松地在 Android 应用中集成语音相关的功能。

项目设置

Gradle 依赖

要在你的项目中使用 Android Speech,只需在 build.gradle 文件中添加以下依赖:

implementation 'net.gotev:speech:x.y.z'

请将 x.y.z 替换为 Maven Central 上的最新版本。

初始化

若要开始使用该库,需要在你的 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() {
        // 防止 Activity 销毁时内存泄漏
        Speech.getInstance().shutdown();
    }
}

示例与用法

在项目的 examples 目录中可以找到一个完全可工作的示例应用程序,该应用展示了如何使用此库。

语音识别

在 Activity 中,可以按照以下方式使用语音识别:

try {
    // 确保已授予 android.permission.RECORD_AUDIO 权限
    Speech.getInstance().startListening(new SpeechDelegate() {
        @Override
        public void onStartOfSpeech() {
            Log.i("speech", "speech recognition is now active");
        }

        @Override
        public void onSpeechRmsChanged(float value) {
            Log.d("speech", "rms is now: " + value);
        }

        @Override
        public void onSpeechPartialResults(List<String> results) {
            StringBuilder str = new StringBuilder();
            for (String res : results) {
                str.append(res).append(" ");
            }
            Log.i("speech", "partial result: " + str.toString().trim());
        }

        @Override
        public void onSpeechResult(String result) {
            Log.i("speech", "result: " + result);
        }
    });
} catch (SpeechRecognitionNotAvailable exc) {
    Log.e("speech", "Equipment does not support speech recognition!");
} catch (GoogleVoiceTypingDisabledException exc) {
    Log.e("speech", "Google voice typing must be enabled!");
}

资源释放

在 Activity 的 onDestroy 方法中,添加以下代码以防止内存泄漏:

@Override
protected void onDestroy() {
    Speech.getInstance().shutdown();
}

显示进度动画

可以在布局中添加 SpeechProgressView 来显示语音识别过程中的音量变化:

<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>

启动语音识别时,还需传递 SpeechProgressView 对象:

Speech.getInstance().startListening(speechProgressView, speechDelegate);

自定义颜色和最大高度

公司可以自定义进度条的颜色和最大高度:

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);

int[] heights = {60, 76, 58, 80, 55};
speechProgressView.setBarMaxHeightsInDp(heights);

文本转语音

在 Activity 中使用文本转语音功能:

Speech.getInstance().say("say something");

提供回调以接收状态:

Speech.getInstance().say("say something", new TextToSpeechCallback() {
    @Override
    public void onStart() {
        Log.i("speech", "speech started");
    }

    @Override
    public void onCompleted() {
        Log.i("speech", "speech completed");
    }

    @Override
    public void onError() {
        Log.i("speech", "speech error");
    }
});

配置

可以通过设置方法对演讲实例进行配置。详细信息可以参考 Java 文档。

日志管理

默认情况下,库的日志记录是禁用的。可以通过以下方法启用调试日志:

Logger.setLogLevel(LogLevel.DEBUG);

日志通过 android.util.Log 输出到 LogCat 中。如果希望将日志重定向到其他输出或使用不同的日志记录器,可以实现自己的委托:

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) {
        // 自定义实现
    }
});

其他功能

从版本 1.5.0 开始,Speech 库提供了一些 API 用于获取和设置语音转文本和文本转语音的语言和声音。详细使用请查看示例应用。

致谢和许可证

特别感谢 @zagum 提供的原始 speech recognition view 实现,以及 Kristiyan Petrov 对代码的审核、bug 修复和改进建议。

该项目遵循 Apache 2.0 许可证。请参阅 LICENSE 文档以了解更多信息。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号