java讯飞语音听写

飞语音识别在美国能用吗(在线的)?延迟如何?

现在app的开发进程会集成一些语音识别功能,而一般开发者是不具备自己开发一套语音识别引擎的,因此大多数情况是选择一个已经成熟的语音识别引擎SDK集成到自己的app中。

通常情况下,这种集成分两种,一种是直接调用SDK为开发者设计好的弹出框,开发者不需要开发识别交互界面;还有一种是开发者只利用SDK提供的语音识别服务,自己开发一个属于自己的交互设计。

本文介绍最简单直接调起弹出框的方法。

首先,测试机需要安装如谷歌语音、百度语音、讯飞语音等产品的语音,这时可以在系统设置界面的语言与输入处找到相关的语音识别功能列表。然后就可以直接调用了。

下面是调用的步骤:

首先:在Activity中实例一个intent,intent的action设置为RecognizerIntent.ACTION_RECOGNIZE_SPEECH或者RecognizerIntent.ACTION_WEB_SEARCH,关于RecognizerIntent可以查看本博客之前的文章,然后调用一个带返回结果的操作

pre name=”code” class=”java”@Override

public void onClick(View v) {

Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

//Intent intent=new Intent(RecognizerIntent.ACTION_WEB_SEARCH);

startActivityForResult(intent, 0);

}

然后:在返回结果中取出携带字符串RecognizerIntent.EXTRA_RESULTS对应的结果,android语音识别服务统一将结果以ArrayListString形式返回,如下代码

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

ArrayListString results = data

.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

Log.i(“zpf”, results.get(0).toString());

}

另外,需要在配置文件中添加:

uses-permission android:name=”android.permission.RECORD_AUDIO” /

uses-permission android:name=”android.permission.INTERNET” /

java讯飞语音听写

android studio怎么加讯飞语音

第一步 :了解TTS语音服务

TTS的全称为Text To Speech,即“从文本到语音”。它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转化为自然语音流。

TTS技术对文本文件进行实时转换,转换时间之短可以秒计算。在其特有智能语音控制器作用下,文本输出的语音音律流畅,使得听者在听取信息时感觉自然,毫无机器语音输出的冷漠与生涩感。使用户可以听到清晰悦耳的音质和连贯流畅的语调

讯飞语言服务分为在线合成和本地合成,其中本地合成需要下载语言包,这和google的TTS一样,但是google的TTS在有的手机中不被支持或者是不支持中文。在这里我们使用的是在线合成的方法,需要有一点点的网速,否则会出现网络缓慢,暂停播放的提示。

第二步:了解主要对象和方法

// 语音合成对象

private SpeechSynthesizer mTts;

// 语音听写对象

private SpeechRecognizer mIat;

//初始化TTS

mTts = SpeechSynthesizer.createSynthesizer(IatDemo.this, mTtsInitListener);

//主要方法 text为要读的文本

mTts.startSpeaking(text, mTtsListener);

//语音对象参数设置

// 设置听写引擎

mIat.setParameter(SpeechConstant.ENGINE_TYPE, mEngineType);

// 设置返回结果格式

mIat.setParameter(SpeechConstant.RESULT_TYPE, “json”);

String lag = mSharedPreferences.getString(“iat_language_preference”,

“mandarin”);

if (lag.equals(“en_us”)) {

// 设置语言

mIat.setParameter(SpeechConstant.LANGUAGE, “en_us”);

} else {

// 设置语言

mIat.setParameter(SpeechConstant.LANGUAGE, “zh_cn”);

// 设置语言区域

mIat.setParameter(SpeechConstant.ACCENT, lag);

}

// 设置语音前端点:静音超时时间,即用户多长时间不说话则当做超时处理

mIat.setParameter(SpeechConstant.VAD_BOS, mSharedPreferences.getString(“iat_vadbos_preference”, “4000”));

// 设置语音后端点:后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音

mIat.setParameter(SpeechConstant.VAD_EOS, mSharedPreferences.getString(“iat_vadeos_preference”, “1000”));

// 设置标点符号,设置为”0″返回结果无标点,设置为”1″返回结果有标点

mIat.setParameter(SpeechConstant.ASR_PTT, mSharedPreferences.getString(“iat_punc_preference”, “1”));

// 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限

// 注:AUDIO_FORMAT参数语记需要更新版本才能生效

mIat.setParameter(SpeechConstant.AUDIO_FORMAT,”wav”);

mIat.setParameter(SpeechConstant.ASR_AUDIO_PATH, Environment.getExternalStorageDirectory()+”/msc/iat.wav”);

// 设置听写结果是否结果动态修正,为“1”则在听写过程中动态递增地返回结果,否则只在听写结束之后返回最终结果

// 注:该参数暂时只对在线听写有效

mIat.setParameter(SpeechConstant.ASR_DWA, mSharedPreferences.getString(“iat_dwa_preference”, “0”));

第三步:实现功能

package com.jerehedu.administrator.mysounddemo;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.Window;

import android.widget.EditText;

import android.widget.RadioGroup;

import android.widget.Toast;

import com.iflytek.cloud.ErrorCode;

import com.iflytek.cloud.InitListener;

import com.iflytek.cloud.RecognizerListener;

import com.iflytek.cloud.RecognizerResult;

import com.iflytek.cloud.SpeechConstant;

import com.iflytek.cloud.SpeechError;

import com.iflytek.cloud.SpeechRecognizer;

import com.iflytek.cloud.SpeechSynthesizer;

import com.iflytek.cloud.SynthesizerListener;

import com.iflytek.cloud.ui.RecognizerDialog;

import com.iflytek.cloud.ui.RecognizerDialogListener;

import com.iflytek.sunflower.FlowerCollector;

import org.json.JSONException;

import org.json.JSONObject;

import java.util.HashMap;

import java.util.LinkedHashMap;

讯飞离线语音识别,语音听写每次到20秒的时候,就会报“本地引擎错误”,错误码:23008!在API

在查找的讯飞语音SDK API的doc文档的异常错误表,找出对应错误码23008的是:

public static final int ERROR_ASR_SPEECH_TIMEOUT 23008 ;

意思是听写时间超出异常。

你可以通过一些设置解决,但是时间设置过长的话没有效果。

mIat.setParameter(SpeechConstant.VAD_BOS, “5000”);//听写开始时等待时间;

mIat.setParameter(SpeechConstant.VAD_EOS, “10000”);//听写结束前的等待时间,判断没有听到说话时超过10秒就产生听写借书事件,结束听写。

怎样用java做语音识别

这块国内一般都用科大讯飞的语音云来做语音识别。不过那个接口是c/c++的,用JAVA来调用的话要通过java调用dll的技术,类似于 jni 或者 jna 都可以

之前java的语音识别是调用讯飞的dll文件,但怎么在此基础上编写一个离线的语音识别,求方法

一般那种c#的dll是java不能直接调用的,但C\C++可以,你可以使用JNI。比如你要一个 public native void sengMsg(String msg); 来发送信息,先用native关键字声明这个函数,然后再类里面加一个静态块:

static { System.loadLibrary(“msg”); } 这里的msg是你的后来编译的dll文件名,不是短信猫带的。 然后写其他的函数就可以调用这个方法了,写完后用javac编译,得到class文件,然后用 javah -jni 你的class文件 就会得到一个.h的头文件,用visual studio新建一个dll,把那个.h文件包含进去,用C\C++调用你现有的dll,然后编译得到你的msg.dll,把它复制到你的class文件目录,然后就可以调试运行了。

微软的虚拟主角个性普通话是什么原理?讯飞语言是怎么用JAVA编出声音细微差异的?

微软MR+人工智能,生成一个跟自己一样的虚拟3D人物!自己声音不同语言,应该是收集了语调库,根据语境设置的.

微软智能语音实现技术升级,一次性新增了 5 个声音角色供用户自由选择,覆盖男女声和不同年龄段,以及不同性格和声线特征,包括阳光活泼的男青年(云希)…

微软语音合成多角色可应用在有声书、儿童故事、新闻串讲等多种场景,满足不同的产品矩阵。对于音频内容产业而言,微软此次语音合成多角色技术更新

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月24日 07:41:57
下一篇 2024年3月24日 07:48:22

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4600
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4400
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3600
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4800
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4400
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4300
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    4100
  • javasocket编程,Java socket编程中,禁用nagle算法的参数

    Java进行并发多连接socket编程 1、Java可利用ServerSocket类对外部客户端提供多个socket接口。基本的做法是先创建一个ServerSocket实例,并绑定一个指定的端口,然后在这个实例上调用accept()方法等待客户端的连接请求。 2、Socket socket=server.accept(0;Thread handleThrea…

    2024年5月23日
    4700
  • java死亡,java死代码是什么意思

    我的世界传送回死亡点指令是什么? 1、下面就让我们一起来了解一下吧:我的世界回到死的地方的指令是输入/back,就可以回到死亡地点了,当然也可以看信标,因为死亡后会有一道光集中在死亡点,只要循着光就可以找到目的地了。 2、在服务器中的指令 首先打开指令台,在指令行输入“/back”就可以回到自己的死亡地点了。在单人游戏中的指令 在单人游戏中,您无法直接返回到…

    2024年5月23日
    4900
  • myeclipse能部署java工程么,myeclipse支持jdk18

    myeclipse如何建java文件 1、点击【File】—【New】–【Class】在如下界面,输入Class的名字,如Test,点击【Finish】。Test.java文件创建成功。 2、点击【File】—【New】–【Class】 在如下界面,输入Class的名字,如Test,点击【Finish】。 Te…

    2024年5月23日
    4100

发表回复

登录后才能评论



关注微信