讯飞语音——带你简单实现语音听写

article/2025/8/19 22:26:05

语音听写 de 简单实现


一、前言

        如果你没有在讯飞语音平台上创建应用,请先参考讯飞语音的详细配置使用

二、功能描述

        语音听写和语音合成都是较为基础也是最常使用的两个基本功能。

        语音合成是将文本转化为语音说出来,就是读文章。

        语音听写是什么呢?

                开启或者说触发语音听写的功能,我们开始讲话,然后讲话结束;该服务能将说话的内容转化为文本;

当然功能是这样,用途不仅仅是讲说话内容转化为文本。理解说话者的意图,这才是人工智能的方向。

        这里我们简单的以一个小项目实例实现简单的语音听写。

三、项目实例

        <1.1>项目结构如下图所示:


        <2.1>.新建Android Application Project 项目,命名为TestHearerDemo,

            <2.1.1>说明:

                项目结构基本和上一个项目一样,如果看过上一个语音合成可直接跳过该步骤,去看代码实现部分。首先有几个注意点,避免初始化错误,讯飞语音版本自升级后要求,SDK Appid 一一对应。导入配置文件到新建工程TestHearerDemo

            <2.1.2>配置文件:

                assetslibs 下的包

        注意arm中的so文件必须与当前key值是对应的。就是创建应用时下载的 SDK中所包含的文件,appid 是创建应用时所产生的,不同的应用key值不同。



四、项目代码

        <1.1>.test.layout布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="20dp"android:text="所说内容:" /><EditTextandroid:id="@+id/content_et"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@android:drawable/editbox_dropdown_light_frame"android:cursorVisible="true"android:enabled="true"android:gravity="top"android:visibility="visible" /><Buttonandroid:id="@+id/listen_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="开始说话" /></LinearLayout>

        <1.2>MainActivity.java 代码如下:

package pers.rfeng.demo;import java.util.HashMap;
import java.util.LinkedHashMap;import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechRecognizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class MainActivity extends Activity implements OnClickListener {//存放听写分析结果文本private HashMap<String, String> hashMapTexts = new LinkedHashMap<String, String>();private Button b_btn;  //初始化控件private EditText e_text;SpeechRecognizer hearer;  //听写对象RecognizerDialog dialog;  //讯飞提示框@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test);b_btn = (Button) findViewById(R.id.listen_btn);e_text = (EditText) findViewById(R.id.content_et);b_btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.listen_btn:// 语音配置对象初始化SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID + "=57b2decc");// 1.创建SpeechRecognizer对象,第2个参数:本地听写时传InitListenerhearer = SpeechRecognizer.createRecognizer( MainActivity.this, null);// 交互动画dialog = new RecognizerDialog(MainActivity.this, null);// 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类hearer.setParameter(SpeechConstant.DOMAIN, "iat"); // domain:域名hearer.setParameter(SpeechConstant.LANGUAGE, "zh_cn");hearer.setParameter(SpeechConstant.ACCENT, "mandarin"); // mandarin:普通话//3.开始听写dialog.setListener(new RecognizerDialogListener() {  //设置对话框@Overridepublic void onResult(RecognizerResult results, boolean isLast) {// TODO 自动生成的方法存根Log.d("Result", results.getResultString());//(1) 解析 json 数据<< 一个一个分析文本 >>StringBuffer strBuffer = new StringBuffer();try {JSONTokener tokener = new JSONTokener(results.getResultString());Log.i("TAG", "Test"+results.getResultString());Log.i("TAG", "Test"+results.toString());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);strBuffer.append(obj.getString("w"));}} catch (Exception e) {e.printStackTrace();} 
//            		String text = strBuffer.toString();// (2)读取json结果中的sn字段String sn = null;try {JSONObject resultJson = new JSONObject(results.getResultString());sn = resultJson.optString("sn");} catch (JSONException e) {e.printStackTrace();}//(3) 解析语音文本<< 将文本叠加成语音分析结果  >>hashMapTexts.put(sn, strBuffer.toString());StringBuffer resultBuffer = new StringBuffer();  //最后结果for (String key : hashMapTexts.keySet()) {resultBuffer.append(hashMapTexts.get(key));}e_text.setText(resultBuffer.toString());e_text.requestFocus();//获取焦点e_text.setSelection(1);//将光标定位到文字最后,以便修改}@Overridepublic void onError(SpeechError error) {// TODO 自动生成的方法存根error.getPlainDescription(true);}});dialog.show();  //显示对话框break;default:break;}}
}

        <1.3> AndroidManifest.xml 配置文件

        注意权限配置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="pers.rfeng.demo"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="17"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="pers.rfeng.demo.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 移动统计分析 --><meta-dataandroid:name="IFLYTEK_APPKEY"android:value="'57b2decc'" /><meta-dataandroid:name="IFLYTEK_CHANNEL"android:value="Android_Demo" /></application><!-- 连接网络权限,用于执行云端语音能力 --><uses-permission android:name="android.permission.INTERNET"/><!-- 获取手机录音机使用权限,听写、识别、语义理解需要用到此权限  --><uses-permission android:name="android.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"/>
</manifest>

五、项目演示

        运行项目效果如下:

                界面可能有点儿不好看,嘻嘻

        说明:

                点击按钮,可以开始说话,讯飞语音默认说话最长时长不超过 1 分钟




        语音听写分析结果显示



希望对你有所帮助,更多功能请参考开发文档



http://chatgpt.dhexx.cn/article/tGbXIEP7.shtml

相关文章

使用讯飞实现语音听写与语音合成功能

一、准备工作 1、首先你需要去科大讯飞的官网去注册一个账号&#xff0c;怎么注册我就不说了&#xff0c;然后去控制台&#xff0c;创建新应用。 2、下载对应的sdk&#xff0c;点击sdk下载&#xff0c;记住这里的APPID码&#xff0c;sdk初始化要用。 3、下载语音听写和在线语…

科大讯飞语音听写在vue2中的使用

安装 worker-loader版本是2.0.0 vue.config.js的配置如下chainWebpack:(config)=>{config.output.globalObject("this"); }, configureWebpack: (config) => {config.module.rules.push({test: /\.worker.js$/,use: {loader: "worker-loader",option…

vue+科大讯飞语音听写功能(解决针对vue new Worker报错问题)

参考1&#xff1a;vue科大讯飞语音听写功能(解决针对vue new Worker报错问题)_Other world的博客-CSDN博客 参考2&#xff1a;vue中使用web worker - Gerryli - 博客园 参考3&#xff1a;将PC浏览器、ZOOM等软件正在播放的音频实时转成文字&#xff01;讯飞语音输入法的妙用 -…

Unity2021接入讯飞语音听写(Android)

使用的引擎工具&#xff1a; Unity2021.3.19 android-studio-2021.1.21 第一步&#xff1a; 新建一个Android项目&#xff08;工程名字随便啦&#xff09; 然后新建一个library &#xff08;同上&#xff0c;库名自己命名吧&#xff09; Android环境目前就算是初步建立好了。 …

vue2中接入讯飞语音听写

首先先登录https://www.xfyun.cn/&#xff0c;在控制台中创建自己的app&#xff0c;并且拿到APPID。 下载crypto-js 与线程worker npm install crypto-js npm install worker-loader 官网中有示例文件&#xff0c;稍微改造一下&#xff0c;封装成组件就能使用了。 transco…

Java 接入讯飞语音听写Speech to Text(STT)功能

标题 讯飞认证配置封装监听器客户端工具 Speech2TextClient.java 对外开放接口对外开放接口实现结果参考 根据官方提供的 WebIATWS 工具扩展修改&#xff0c;接入了讯飞的语音听写(STT)服务 讯飞认证配置 public class XFAuthorityConfig {public static final String hostUr…

html5语音听写流式,iOS 讯飞语音听写(流式版)

最近项目中用到了讯飞的语音识别,然后稍微看了一下,里面有几个值得注意的点,记录一下,先说语音听写(流式版),实时语音转写后期会附上 ,文末有 demo //语音听写(流式版) 语音听写流式版其实没设么好说的,因为直接有 SDK,导入项目就可以了,需要注意的点就是每个创建的 APP 和 SDK…

科大讯飞语音听写(Android)

前面就不废话了&#xff0c;像申请应用&#xff0c;获取SDK等等&#xff0c;我相信大家应该都会的&#xff0c;科大讯飞采用的是两种语音听写功能,一种带有UI&#xff0c;一种没有UI&#xff0c;本人还是比较笨的&#xff0c;所以就写了较为简单的不带UI的语音听写&#xff0c;…

语音转写和语音听写_如何在Windows 10上使用语音听写

语音转写和语音听写 Windows 10’s Fall Creators Update makes voice dictation much easier to use. Now, you can immediately begin dictation by pressing a key WindowsH on your keyboard. You don’t have to dig through the Control Panel and set anything up first…

【超简单】之基于PaddleSpeech搭建个人语音听写服务

一、【超简单】之基于PaddleSpeech搭建个人语音听写服务 1.需求分析 亲们&#xff0c;你们要写会议纪要嘛&#xff1f;亲们&#xff0c;你们要写会议纪要嘛&#xff1f;亲们&#xff0c;你们要写会议纪要嘛&#xff1f; 当您面对成吨的会议录音&#xff0c;着急写会议纪要而…

遥感技术及高分遥感影像在地震中的应用及高分二号获取

长期以来&#xff0c;地震预报监测、灾害调查、灾情信息获取主要依靠实地勘测手段&#xff0c;其获取的数据精度和置信度虽然较高&#xff0c;但存在工作量大、效率低、费用高和信息不直观等缺点。遥感技术手段可在一定程度上克服传统实地勘测手段的缺点&#xff0c;并具有其他…

高分一号(GF-1)-中国高分辨率对地观测系统的第一颗卫星

2013年4月26日12时13分04秒由长征二号丁运载火箭成功发射&#xff0c;开启了中国对地观测的新时代。卫星全色分辨率是2米&#xff0c;多光谱分辨率为8米。高分一号卫星的宽幅多光谱相机幅宽达到了800公里。 “高分一号”的特点是增加了高分辨率多光谱相机&#xff0c;该相机的性…

历年(2017-2022)国产陆地观测卫星(高分1号2号6号等)外场绝对辐射定标系数

国产卫星绝对辐射定标系数&#xff08;2008——2022&#xff09; 2017年 参考博文&#xff1a;高分一号/二号/六号定标系数_desertsTsung的博客-CSDN博客

第059篇:高分二号遥感影像预处理流程(ENVI5.3.1平台+ENVI App Store中最新的中国国产卫星支持工具)

今天被袁老的新闻刷屏&#xff0c;湖南衡水县水稻基地传出好消息&#xff1a; 袁隆平团队第三代杂交水稻测产&#xff0c;测得晚稻平均亩产为911.7公斤 早稻晚稻实现亩产3061斤 伟大&#xff0c;除了伟大&#xff0c;不知道还能用什么词概括袁老的不凡成就&#xff01; 说到这…

envi5.3处理高分二号影像数据详细过程记录

目录 一、多光谱影像处理 1. 辐射定标 2.大气校正 1. 需要准备一些数据: 2.大气校正过程 3、正射校正 二、全色影像处理 1. 辐射定标 2. 正射校正 三、图像融合 1.几何配准 2.图像融合 高分二号处理流程 envi5.3的安装教程&#xff1a; ENVI5.3安装 安装完ENVI5.3后…

我国高分系列卫星遥感影像介绍

继上一篇介绍《遥感图像处理》的文章之后&#xff0c;本篇文章对我国的高分系列卫星遥感影像进行简单的整理。 高分系列卫星是在高分专项的支持下&#xff0c;也就是高分辨率对地观测系统重大专项&#xff0c;由国防科技工业局牵头&#xff0c;组织实施建设的一系列高分辨率对…

高分辨率遥感卫星影像在交通方面的应用及高分二号影像获取

高分辨率遥感影像在城市交通领域具有广泛的应用前景&#xff1a;如遥感交通调查、遥感影像地图与电子地图制作、道路工程地质遥感解译、交通安全与知道抗灾救灾、交通事故现场快速勘察、交通需求预测、车辆与车牌视频识别等等。高分辨率影像比如高分二号卫星、高分一号卫星&…

中国高分系列卫星介绍

中国高分系列卫星 中国高分系列卫星是"高分专项"所规划的高分辨率对地观测的系列卫星。它是《国家中长期科学和技术发展规划纲要&#xff08;2006&#xff5e;2020年&#xff09;》所确定的16个重大专项之一。由于课程汇报&#xff0c;所以作了一个PPT&#xff0c;在…

高分二号(GF-2)号卫星数据的查询下载地址和方法

高分二号卫星是我国自主研制的首颗空间分辨优于1米的民用光学遥感卫星可在平台中查询到&#xff0c;搭载有两台高分辨率1米全色、4米多光谱相机&#xff0c;具有亚米级空间分辨率、高定位精度和快速姿态机动能力等特点&#xff0c;有效地提升了卫星综合观测效能&#xff0c;达到…

遥感科普|中国高分系列卫星综述(2020版)

遥感科普|中国高分系列卫星综述(2020版) 文章来源&#xff1a;卫星遥感大数据公众号 高分系列卫星概述 中国高分系列卫星是"高分专项"所规划的高分辨率对地观测的系列卫星。它是《国家中长期科学和技术发展规划纲要&#xff08;2006&#xff5e;2020年&#xff09…