讯飞语音识别在美国能用吗(在线的)?延迟如何?
现在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” /
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 个声音角色供用户自由选择,覆盖男女声和不同年龄段,以及不同性格和声线特征,包括阳光活泼的男青年(云希)…
微软语音合成多角色可应用在有声书、儿童故事、新闻串讲等多种场景,满足不同的产品矩阵。对于音频内容产业而言,微软此次语音合成多角色技术更新