广告
返回顶部
首页 > 资讯 > 移动开发 >详解Androidstudio实现语音转文字功能
  • 801
分享到

详解Androidstudio实现语音转文字功能

2024-04-02 19:04:59 801人浏览 泡泡鱼
摘要

目录一、在科大讯飞的官网上注册并下载SDK二、配置安卓项目三、运行效果展示一、在科大讯飞的官网上注册并下载SDK 1.首先去讯飞开放平台申请一个账号(https://www.xfyu

一、在科大讯飞的官网上注册并下载SDK

1.首先去讯飞开放平台申请一个账号(https://www.xfyun.cn/),然后点击“控制台”进入新的页面,创建一个应用,找到“语音听写”,下载相应的SDK。

文件解压后内容如下:

二、配置安卓项目

1.在Android studio中新建一个空项目,将libs文件夹中的内容复制到安卓项目的libs文件夹下,其中msc.jar要右键添加Add As Library:

2.将assets文件夹拷贝到项目的main目录下,并在main目录下新建一个名为jniLibs的文件夹,将下载的libs文件夹中的两个子文件夹复制到jniLibs中:

3.在AndriodManifest.xml中添加以下权限:

    <!--连接网络权限,用于执行云端语音能力 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="Manifest.permission.RECORD_AUDIO" />
    <!--读取网络信息状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!--获取当前wifi状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <!--允许程序改变网络连接状态 -->
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <!--读取手机信息权限 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <!--读取联系人权限,上传联系人需要用到此权限 -->
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <!--外存储写权限,构建语法需要用到此权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!--外存储读权限,构建语法需要用到此权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <!--配置权限,用来记录应用配置信息 -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    <!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务-->
    <!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <!--如需使用人脸识别,还要添加:摄像头权限,拍照需要用到 -->
    <uses-permission android:name="android.permission.CAMERA" />

4.在app目录下的build.gradle中添加以下代码:

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

5.修改布局文件activity_main.xml中的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_click"
        android:text="点击打开讯飞语音识别"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <EditText
        android:id="@+id/result"
        android:layout_below="@id/btn_click"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="此处显示你所录下的内容"
        />
</LinearLayout>

6.新建一个名为XunFeiCallbackListener的接口:

package com.example.myapplication;
import com.iflytek.cloud.RecognizerResult;

public interface XunFeiCallbackListener {
    void onFinish(RecognizerResult results);
}

7.新建一个名为XunFeiUtil的类:

package com.example.myapplication;
import android.content.Context;
        import android.widget.Toast;
        import com.iflytek.cloud.RecognizerResult;
        import com.iflytek.cloud.SpeechConstant;
        import com.iflytek.cloud.SpeechError;
        import com.iflytek.cloud.SpeechUtility;
        import com.iflytek.cloud.ui.RecognizerDialog;
        import com.iflytek.cloud.ui.RecognizerDialogListener;
        import org.JSON.jsONArray;
        import org.json.JSONObject;
        import org.json.JSONTokener;

public class XunFeiUtil {

    public static String appid = "自己的appid";

    public static void initXunFei(Context context){
        SpeechUtility.createUtility(context, SpeechConstant.APPID +"="+appid);
    }



    public static void startVoice(Context context, final XunFeiCallbackListener callbackListener) {
        RecognizerDialog dialog = new RecognizerDialog(context,null);
        dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        dialog.setParameter(SpeechConstant.ACCENT, "mandarin");
        dialog.setParameter(SpeechConstant.ASR_PTT, "0");
        dialog.setListener(new RecognizerDialogListener() {
            @Override
            public void onResult(RecognizerResult recognizerResult, boolean b) {
                callbackListener.onFinish(recognizerResult);
            }
            @Override
            public void onError(SpeechError speechError) {
            }
        });
        dialog.show();
        //Toast.makeText(this, "请开始说话", Toast.LENGTH_SHORT).show();
    }

    public static String parseIatResult(String json) {
        StringBuffer ret = new StringBuffer();
        try {
            JSONTokener tokener = new JSONTokener(json);
            JSONObject joResult = new JSONObject(tokener);
            JSONArray Words = joResult.getJSONArray("ws");
            for (int i = 0; i < words.length(); i++) {
                // 转写结果词,默认使用第一个结果
                JSONArray items = words.getJSONObject(i).getJSONArray("cw");
                JSONObject obj = items.getJSONObject(0);
                ret.append(obj.getString("w"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret.toString();
    }
}

8.修改MainActivity:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.iflytek.cloud.RecognizerResult;
import static com.example.myapplication.XunFeiUtil.parseIatResult;
import static com.example.myapplication.XunFeiUtil.*;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private Button btn_click;
    private EditText mResultText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initXunFei(this);
        btn_click = (Button) findViewById(R.id.btn_click);
        mResultText = ((EditText) findViewById(R.id.result));
        btn_click.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        startVoice(this, new XunFeiCallbackListener() {
            @Override
            public void onFinish(RecognizerResult results) {
                String text = parseIatResult(results.getResultString());
                // 自动填写地址
                mResultText.append(text);
            }
        });
    }

}

三、运行效果展示

按照以上操作进行修改,完成后运行项目,会出现语音开启失败,错误码为20006的错误,出错原因是android系统在非动态申请权限的情况下,默认是把麦克风权限是关闭了的,因此需要打开权限,可以在手机的权限中自己修改权限设置,成功后的界面如下:

以上就是详解Android studio实现语音转文字功能的详细内容,更多关于Android studio语音转文字的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解Androidstudio实现语音转文字功能

本文链接: https://www.lsjlt.com/news/141237.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Androidstudio实现语音转文字功能
    目录一、在科大讯飞的官网上注册并下载SDK二、配置安卓项目三、运行效果展示一、在科大讯飞的官网上注册并下载SDK 1.首先去讯飞开放平台申请一个账号(https://www.xfyu...
    99+
    2022-11-13
  • vue实现文字转语音功能详解
    目前h5新增一个文字转语音的功能(但是正在完善中,勉强能用),h5新增的SpeechSynthesisUtterance实例 首先new一个SpeechSynthesisUttera...
    99+
    2022-11-13
  • C#实现文字转语音功能
    本文实例为大家分享了C#实现文字转语音的具体代码,供大家参考,具体内容如下 客户提出要求,将文字内容转为语音,因为内网环境,没办法采用联网,在线这种方式,灵机一动,能否写一个简单的例...
    99+
    2022-11-13
  • Python详解文字转语音的实现
    前言: 这是一篇简单的Python文字(汉字)转语音教程,当然对于其他语言工具在实现的方法上也是一样的 。 汉字转语音实现就分为两步,第一步将汉字转为拼音,第二步通过拼音调用相匹配的...
    99+
    2022-11-13
  • C#如何实现文字转语音功能
    本文小编为大家详细介绍“C#如何实现文字转语音功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#如何实现文字转语音功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果图关键是,c#有现成的一个引用右键点击...
    99+
    2023-06-29
  • C#实现汉字转拼音(多音字)功能详解
    缘由:根据姓名创建账号,存在生僻字以及多音字 做法:自己根据网上信息自己写了类,词库可能不完整(有待补充) 其他不多说了,先上代码如下: using System; using Sy...
    99+
    2023-02-15
    C#实现汉字转拼音 C#汉字转拼音 C# 汉字 拼音
  • Android studio如何实现语音转文字功能
    这篇文章主要介绍了Android studio如何实现语音转文字功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、在科大讯飞的官网上注册并下载SDK首先去讯飞开...
    99+
    2023-06-29
  • uniapp调用百度语音实现录音转文字功能
    经历三天时间各种遇到困难 之后终于实现了这个功能,参照网上了许多文章 才找到一个能正常实现的方法,网上能找到的例子都不起作用,相信很多人困惑在这,为了避免别人出现这种情况,我分享我的...
    99+
    2022-11-12
  • C#实现文本转语音功能
    由于最近的工作需要用到文本转语音的功能,在网上找到的资料有些不完整,特此记录下整个完整功能。 这种方式的优点在于不会被浏览器限制,在js的文本转语音功能中,谷歌高版本的浏览器会阻止通...
    99+
    2022-11-13
  • uniapp如何调用百度语音实现录音转文字功能
    这篇文章给大家分享的是有关uniapp如何调用百度语音实现录音转文字功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。经历三天时间各种遇到困难 之后终于实现了这个功能,参照网上了许多文章 才找到一个能正常实现的方...
    99+
    2023-06-22
  • C#怎么实现文本转语音功能
    这篇文章主要介绍“C#怎么实现文本转语音功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#怎么实现文本转语音功能”文章能帮助大家解决问题。这种方式的优点在于不会被浏览器限制,在js的文本转语音功...
    99+
    2023-06-29
  • 详解如何利用C#实现汉字转拼音功能
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-23
    C#汉字转拼音 C# 汉字 拼音
  • 详解Unity 实现语音识别功能
    现在语音识别已经被广泛的应用到各个领域中,在Unity开发中,语音识别也非常受欢迎。大部分人都会选择科大讯飞的语音识别功能,但是在一些小的项目中,使用科大讯飞的就有点大材小用了。今天...
    99+
    2022-11-12
  • Python实现语音合成功能详解
    目录导语1.直接使用2. 获取权限2.1 环境准备:2.2 获取权限3. 代码实现3.1 获取access_token3.2 获取转换后音频3.3 配置接口参数3.4 完整demo3...
    99+
    2022-11-13
  • 基于Python实现语音识别和语音转文字
    目录前言直接使用获取权限1.环境准备2.获取权限代码实现1.获取access_token2.获取转换后音频3.配置接口参数4.完整demo5.执行前言 嗨嗨,大家好呀 ~ 今天给你们...
    99+
    2022-11-11
  • Android通过TextToSpeech实现文字转语音
    一、直接上代码: import android.app.Activity;import android.os.Bundle;import android.speech.tts.TextToSpeech;import android.util...
    99+
    2023-10-10
    android java 开发语言
  • 电脑如何实现语音输入文字功能
    电脑实现语音输入文字功能主要依赖语音识别技术。下面是一种常见的实现方式:1. 麦克风:首先需要通过一个麦克风或者其他录音设备来获取语...
    99+
    2023-09-05
    电脑
  • android实现汉字转拼音功能 带多音字识别
    android 汉字转拼音带多音字识别功能,供大家参考,具体内容如下 问题来源 在做地名按首字母排序的时候出现了这样一个bug。长沙会被翻译拼音成zhangsha,重庆会被...
    99+
    2022-06-06
    转拼音 Android
  • 基于C#实现语音识别功能详解
    在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音。 以上,当我说"name",显示"Darren",我说&...
    99+
    2022-11-13
  • Java离线中文语音文字识别功能怎么实现
    这篇文章主要讲解了“Java离线中文语音文字识别功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java离线中文语音文字识别功能怎么实现”吧!1、pom文件如下:<xml&n...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作