嵌入式项目之Android语音识别——读后听写语音识别(语音识别功能主函数调用)


文章目录

  • 前言
  • 一、代码示例
  • 二、代码分析
    • 1.创建 SpeechSynthesizer 对象
    • 2.设置合成参数
    • 3.开始合成
    • 4.设置合成状态监听器
    • 5.五个speakText类函数的作用
  • 总结

前言

最近在学习嵌入式系统的一个功能——导航语音识别,该功能是基于Android和科大讯飞语音识别语音合成,利用RFID射频识别技术实现的功能,整个导航语音识别功能包括语音识别、语音合成、导航听写、语音提示语音识别的语音合成三大模块。这里我整理了第三模块——读后听写语音识别。该模块是对前面两个模块的调用,也就是导航语音识别功能主函数调用。


一、代码示例

//读完听写的语音合成
private void speakText(String textBeSpeak) {SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID+ "=" + APPID);//1. 创建 SpeechSynthesizer 对象 , 第二个参数: 本地合成时传 InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer( this, null);//2.合成参数设置,详见《 MSC Reference Manual》 SpeechSynthesizer 类//设置发音人(更多在线发音人,用户可参见)mTts.setParameter(SpeechConstant. VOICE_NAME, "xiaoyan" ); // 设置发音人mTts.setParameter(SpeechConstant. SPEED, "20" );// 设置语速mTts.setParameter(SpeechConstant. VOLUME, "80" );// 设置音量,范围 0~100mTts.setParameter(SpeechConstant. ENGINE_TYPE, SpeechConstant. TYPE_CLOUD); //设置云端//设置合成音频保存位置(可自定义保存位置),保存在 “./sdcard/iflytek.pcm”//保存在 SD 卡需要在 AndroidManifest.xml 添加写 SD 卡权限//仅支持保存为 pcm 和 wav 格式, 如果不需要保存合成音频,注释该行代码//mTts.setParameter(SpeechConstant. TTS_AUDIO_PATH, "./sdcard/iflytek.pcm" );//3.开始合成mTts.startSpeaking( textBeSpeak, new MySynthesizerListener()) ;
}
class MySynthesizerListener implements SynthesizerListener {@Overridepublic void onSpeakBegin() {// Log.d(TAG," 开始播放 ");}@Overridepublic void onSpeakPaused() {// showTip(" 暂停播放 ");}@Overridepublic void onSpeakResumed() {// showTip(" 继续播放 ");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos ,String info) {// 合成进度}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {Speech();} else if (error != null ) {// showTip(error.getPlainDescription( true));}}@Overridepublic void onEvent(int eventType, int arg1 , int arg2, Bundle obj) {}
}private void speakText1(String textBeSpeak) {SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID+ "=" + APPID);//1. 创建 SpeechSynthesizer 对象 , 第二个参数: 本地合成时传 InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer( this, null);//2.合成参数设置,详见《 MSC Reference Manual》 SpeechSynthesizer 类//设置发音人(更多在线发音人,用户可参见)mTts.setParameter(SpeechConstant. VOICE_NAME, "xiaoyan" ); // 设置发音人mTts.setParameter(SpeechConstant. SPEED, "20" );// 设置语速mTts.setParameter(SpeechConstant. VOLUME, "80" );// 设置音量,范围 0~100mTts.setParameter(SpeechConstant. ENGINE_TYPE, SpeechConstant. TYPE_CLOUD); //设置云端//设置合成音频保存位置(可自定义保存位置),保存在 “./sdcard/iflytek.pcm”//保存在 SD 卡需要在 AndroidManifest.xml 添加写 SD 卡权限//仅支持保存为 pcm 和 wav 格式, 如果不需要保存合成音频,注释该行代码//mTts.setParameter(SpeechConstant. TTS_AUDIO_PATH, "./sdcard/iflytek.pcm" );//3.开始合成mTts.startSpeaking( textBeSpeak, new MySynthesizerListener1()) ;
}
class MySynthesizerListener1 implements SynthesizerListener {@Overridepublic void onSpeakBegin() {// Log.d(TAG," 开始播放 ");}@Overridepublic void onSpeakPaused() {// showTip(" 暂停播放 ");}@Overridepublic void onSpeakResumed() {// showTip(" 继续播放 ");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos ,String info) {// 合成进度}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {daoda = false;vitSpeech();}else if (error != null ) {// showTip(error.getPlainDescription( true));}}@Overridepublic void onEvent(int eventType, int arg1 , int arg2, Bundle obj) {}
}private void speakText2(String textBeSpeak) {SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID+ "=" + APPID);//1. 创建 SpeechSynthesizer 对象 , 第二个参数: 本地合成时传 InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer( this, null);//2.合成参数设置,详见《 MSC Reference Manual》 SpeechSynthesizer 类//设置发音人(更多在线发音人,用户可参见)mTts.setParameter(SpeechConstant. VOICE_NAME, "xiaoyan" ); // 设置发音人mTts.setParameter(SpeechConstant. SPEED, "20" );// 设置语速mTts.setParameter(SpeechConstant. VOLUME, "80" );// 设置音量,范围 0~100mTts.setParameter(SpeechConstant. ENGINE_TYPE, SpeechConstant. TYPE_CLOUD); //设置云端//设置合成音频保存位置(可自定义保存位置),保存在 “./sdcard/iflytek.pcm”//保存在 SD 卡需要在 AndroidManifest.xml 添加写 SD 卡权限//仅支持保存为 pcm 和 wav 格式, 如果不需要保存合成音频,注释该行代码//mTts.setParameter(SpeechConstant. TTS_AUDIO_PATH, "./sdcard/iflytek.pcm" );//3.开始合成mTts.startSpeaking( textBeSpeak, new MySynthesizerListener2()) ;
}
class MySynthesizerListener2 implements SynthesizerListener {@Overridepublic void onSpeakBegin() {// Log.d(TAG," 开始播放 ");}@Overridepublic void onSpeakPaused() {// showTip(" 暂停播放 ");}@Overridepublic void onSpeakResumed() {// showTip(" 继续播放 ");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos ,String info) {// 合成进度}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {if(kaiqi){route();}else{route1();}}else if (error != null ) {}}@Overridepublic void onEvent(int eventType, int arg1 , int arg2, Bundle obj) {}
}private void speakText4(String textBeSpeak) {SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID+ "=" + APPID);//1. 创建 SpeechSynthesizer 对象 , 第二个参数: 本地合成时传 InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer( this, null);//2.合成参数设置,详见《 MSC Reference Manual》 SpeechSynthesizer 类//设置发音人(更多在线发音人,用户可参见)mTts.setParameter(SpeechConstant. VOICE_NAME, "xiaoyan" ); // 设置发音人mTts.setParameter(SpeechConstant. SPEED, "20" );// 设置语速mTts.setParameter(SpeechConstant. VOLUME, "80" );// 设置音量,范围 0~100mTts.setParameter(SpeechConstant. ENGINE_TYPE, SpeechConstant. TYPE_CLOUD); //设置云端//设置合成音频保存位置(可自定义保存位置),保存在 “./sdcard/iflytek.pcm”//保存在 SD 卡需要在 AndroidManifest.xml 添加写 SD 卡权限//仅支持保存为 pcm 和 wav 格式, 如果不需要保存合成音频,注释该行代码//mTts.setParameter(SpeechConstant. TTS_AUDIO_PATH, "./sdcard/iflytek.pcm" );//3.开始合成mTts.startSpeaking( textBeSpeak, new MySynthesizerListener4()) ;
}
class MySynthesizerListener4 implements SynthesizerListener {@Overridepublic void onSpeakBegin() {// Log.d(TAG," 开始播放 ");}@Overridepublic void onSpeakPaused() {// showTip(" 暂停播放 ");}@Overridepublic void onSpeakResumed() {// showTip(" 继续播放 ");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos ,String info) {// 合成进度}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {Speech2();} else if (error != null ) {// showTip(error.getPlainDescription( true));}}@Overridepublic void onEvent(int eventType, int arg1 , int arg2, Bundle obj) {}
}private void speakText3(String textBeSpeak) {SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID+ "=" + APPID);//1. 创建 SpeechSynthesizer 对象 , 第二个参数: 本地合成时传 InitListenerSpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer( this, null);//2.合成参数设置,详见《 MSC Reference Manual》 SpeechSynthesizer 类//设置发音人(更多在线发音人,用户可参见)mTts.setParameter(SpeechConstant. VOICE_NAME, "xiaoyan" ); // 设置发音人mTts.setParameter(SpeechConstant. SPEED, "20" );// 设置语速mTts.setParameter(SpeechConstant. VOLUME, "80" );// 设置音量,范围 0~100mTts.setParameter(SpeechConstant. ENGINE_TYPE, SpeechConstant. TYPE_CLOUD); //设置云端//设置合成音频保存位置(可自定义保存位置),保存在 “./sdcard/iflytek.pcm”//保存在 SD 卡需要在 AndroidManifest.xml 添加写 SD 卡权限//仅支持保存为 pcm 和 wav 格式, 如果不需要保存合成音频,注释该行代码//mTts.setParameter(SpeechConstant. TTS_AUDIO_PATH, "./sdcard/iflytek.pcm" );//3.开始合成mTts.startSpeaking( textBeSpeak, new MySynthesizerListener2()) ;
}
class MySynthesizerListener3 implements SynthesizerListener {@Overridepublic void onSpeakBegin() {// Log.d(TAG," 开始播放 ");try {wait();} catch (InterruptedException e) {e.printStackTrace();}}@Overridepublic void onSpeakPaused() {// showTip(" 暂停播放 ");}@Overridepublic void onSpeakResumed() {// showTip(" 继续播放 ");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos ,String info) {// 合成进度}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {notifyAll();}else if (error != null ) {}}@Overridepublic void onEvent(int eventType, int arg1 , int arg2, Bundle obj) {}
}@Override
protected void onDestroy()
{super.onDestroy();//解除广播接收器unregisterReceiver(mGattUpdateReceiver);mBluetoothLeService = null;
}// Activity出来时候,绑定广播接收器,监听蓝牙连接服务传过来的事件
@Override
protected void onResume()
{super.onResume();//绑定广播接收器registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());if (mBluetoothLeService != null){//根据蓝牙地址,建立连接final boolean result = mBluetoothLeService.connect(mDeviceAddress);}
}/* 意图过滤器 */
private static IntentFilter makeGattUpdateIntentFilter()
{final IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED);intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED);intentFilter.addAction(BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED);intentFilter.addAction(BluetoothLeService.ACTION_DATA_AVAILABLE);return intentFilter;
}
/* BluetoothLeService绑定的回调函数 */
private final ServiceConnection mServiceConnection = new ServiceConnection()
{@Overridepublic void onServiceConnected(ComponentName componentName,IBinder service){mBluetoothLeService = ((BluetoothLeService.LocalBinder) service).getService();if (!mBluetoothLeService.initialize()){//Log.e(TAG, "Unable to initialize Bluetooth");finish();}mBluetoothLeService.connect(mDeviceAddress);}@Overridepublic void onServiceDisconnected(ComponentName componentName){mBluetoothLeService = null;}
};/*** 广播接收器,负责接收BluetoothLeService类发送的数据*/
private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver()
{@Overridepublic void onReceive(Context context, Intent intent){final String action = intent.getAction();if (BluetoothLeService.ACTION_GATT_CONNECTED.equals(action))//Gatt连接成功{mConnected = true;//status = "connected";//更新连接状态//updateConnectionState(status);System.out.println("BroadcastReceiver :" + "device connected");} else if (BluetoothLeService.ACTION_GATT_DISCONNECTED//Gatt连接失败.equals(action)){mConnected = false;//status = "disconnected";//更新连接状态//updateConnectionState(status);System.out.println("BroadcastReceiver :"+ "device disconnected");} else if (BluetoothLeService.ACTION_GATT_SERVICES_DISCOVERED//发现GATT服务器.equals(action)){// Show all the supported services and characteristics on the// user interface.//获取设备的所有蓝牙服务displayGattServices(mBluetoothLeService.getSupportedGattServices());System.out.println("BroadcastReceiver :"+ "device SERVICES_DISCOVERED");} else if (BluetoothLeService.ACTION_DATA_AVAILABLE.equals(action))//有效数据{//处理发送过来的数据try {if (intent.getExtras().getString(BluetoothLeService.EXTRA_DATA)!=null) {displayData(intent.getExtras().getString(BluetoothLeService.EXTRA_DATA), intent);System.out.println("BroadcastReceiver onData:"+ intent.getStringExtra(BluetoothLeService.EXTRA_DATA));}}catch (Exception e){e.printStackTrace();}}}
};

语音合成:

依据科大讯飞的语音在线合成技术得以实现。在科大讯飞服务器申请了集成语音在线转写和语音在线合成两大功能的应用,所以仅需要同一个APPID,导入到同一个SDK即可。开发过程中,我们将SDK源码中关于语音合成的APPID更改为我们系统的ID,在activity文件中,设置语音合成的参数,其中需要设置参数包括发音人、语调、语速、音量等。由于采用的是科大讯飞语音在线合成功能,因此,APP应用需要在联网的情况下使用,通过调用语音合成方法,将该方法中的参数,即合成内容,发送到科大讯飞与服务器中,并接收服务器返回的音频文件进行播放。

二、代码分析

1.创建 SpeechSynthesizer 对象

SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer( this, null);

<!--语音合成,又称文语转换(Text to Speech,TTS)技术,解决的主要问题 是如何将文字信息转化为可听的声音信息(即音频数据)。-->

2.设置合成参数

//2.合成参数设置,详见《 MSC Reference Manual》 SpeechSynthesizer 类
//设置发音人(更多在线发音人,用户可参见)
mTts.setParameter(SpeechConstant. VOICE_NAME, "xiaoyan" ); // 设置发音人
mTts.setParameter(SpeechConstant. SPEED, "20" );// 设置语速
mTts.setParameter(SpeechConstant. VOLUME, "80" );// 设置音量,范围 0~100
mTts.setParameter(SpeechConstant. ENGINE_TYPE, SpeechConstant. TYPE_CLOUD); //设置云端
//设置合成音频保存位置(可自定义保存位置),保存在 “./sdcard/iflytek.pcm”
//保存在 SD 卡需要在 AndroidManifest.xml 添加写 SD 卡权限
//仅支持保存为 pcm 和 wav 格式, 如果不需要保存合成音频,注释该行代码
//mTts.setParameter(SpeechConstant. TTS_AUDIO_PATH, "./sdcard/iflytek.pcm" );

其中:

<!--VOICE_NAME-->

  public static final java.lang.String VOICE_NAME

<!--合成发音人-->

<!--通过此参数,在合成中使用不同的语言和方言性别等。设置发音人,语速、语调、音量,在一次合成时开始后,就会在合成的音频中生效,此时,若要中途改变这些参数,则应该从想要改变的文本处重新开始合成,因为已经返回的音频 是无法再改变的。-->

<!--默认值: xiaoyan-->-->

<!--SPEED-->

 public static final java.lang.String SPEED

<!合成语速-->

<!--通过此参数,设置合成返回音频的语速。-->

<!--是否必须设置:否-->

<!--默认值:50-->

<!--值范围:[0, 100]-->

<!--VOLUME-->

 public static final java.lang.String VOLUME

<!合成音量-->

<!--通过此参数,设置合成返回音频的音量。合成音量,影响的是合成到的音频本身的 音量大小(振幅),而非播放时系统的音量。关于播放时操作系统的音量,则请自行 查找操作系统相关API开发接口说明。-->

<!--是否必须设置:否-->

<!--默认值:50-->

<!--值范围:[0, 100]-->

<!--ENGINE_TYPE-->

public static final java.lang.String ENGINE_TYPE

<!引擎类型-->

<!--设置使用的引擎类型:在线、离线。在申请了离线合成资源和权限, 可以选择使用本地或在线的方式进行语音服务。-->

<!--使用在线模式([`TYPE_CLOUD`]又称云端模式)时,需要使用网络,产生一定流量,但有更好的识别 或合成的效果,如更高的识别匹配度,更多的发音人等。-->

<!--使用离线模式([`TYPE_LOCAL`]又称本地模式)时,不需要使用网络,且识别和合成的速度更快。-->

3.开始合成

mTts.startSpeaking( textBeSpeak, new MySynthesizerListener()) ;

<!--startSpeaking-->

public int startSpeaking(java.lang.String text,SynthesizerListener listener)

参数: text - 待合成的文本 listener - 合成状态监听器

<!--开始合成 调用此函数,开始合成文本并播放音频。-->

4.设置合成状态监听器

class MySynthesizerListener implements SynthesizerListener {@Overridepublic void onSpeakBegin() {// Log.d(TAG," 开始播放 ");}@Overridepublic void onSpeakPaused() {// showTip(" 暂停播放 ");}@Overridepublic void onSpeakResumed() {// showTip(" 继续播放 ");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos ,String info) {// 合成进度}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {// 播放进度}@Overridepublic void onCompleted(SpeechError error) {if (error == null) {Speech();} else if (error != null ) {// showTip(error.getPlainDescription( true));}}@Overridepublic void onEvent(int eventType, int arg1 , int arg2, Bundle obj) {}
}

其中Speech()在首页语音识别合成中已经介绍。

5. 五个speakText类函数的作用

相信大家在刚看到代码时,会很纳闷,为啥要定义四个相似的函数,但是请仔细分析代码,这五个函数其实用于四个不同功能函数的调用。也就是对前两个板块的总结。

5.1 speakText()的作用

代码示例

private void speakText(String textBeSpeak) {...mTts.startSpeaking( textBeSpeak, new MySynthesizerListener()) ;
}
class MySynthesizerListener implements SynthesizerListener {...@Overridepublic void onCompleted(SpeechError error) {if (error == null) {Speech();} else if (error != null ) {// showTip(error.getPlainDescription( true));}}...
}

该函数调用功能函数Speech(),其作用是:执行通过rfid射频技术实现的确定当前位置。(Speech()具体代码在我另一篇博客——语音识别合成中)

5.2 speakText1()的作用

代码示例

private void speakText1(String textBeSpeak) {...mTts.startSpeaking( textBeSpeak, new MySynthesizerListener1()) ;
}
class MySynthesizerListener1 implements SynthesizerListener {...@Overridepublic void onCompleted(SpeechError error) {if (error == null) {daoda = false;vitSpeech();}else if (error != null ) {// showTip(error.getPlainDescription( true));}}...
}

该函数调用功能函数vitSpeech(),其作用是:导航听写,利用rfid射频技术实现的确定当前位置并获取目的地。

5.3 speakText2()的作用

代码示例

private void speakText2(String textBeSpeak) {...mTts.startSpeaking( textBeSpeak, new MySynthesizerListener2()) ;
}
class MySynthesizerListener2 implements SynthesizerListener {
​...@Overridepublic void onCompleted(SpeechError error) {if (error == null) {if(kaiqi){route();}else{route1();}}else if (error != null ) {}}...
}

该函数根据if条件判断分别调用route()和route1(),其作用是:导向方法,其中route()和route1()的区别在route()增加开启识别前方障碍物并打开相机。

  if (!takephoto && distance <= 50) {wancheng = true;takephoto = true;try {speakText2("识别到前方有障碍物。正在识别中,请稍候!");sleep(1000);} catch (InterruptedException e) {//InterruptedException 异常处理//printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。e.printStackTrace();} finally {//打开相机turnOnCamera();
//                            rev_tv.post(new Runnable() {
//                                @Override
//                                public void run() {
//                                    photo_btn.performClick();
//                                }
//                            });}while(wancheng){
​}}

5.4 speakText4()的作用

代码示例

private void speakText4(String textBeSpeak) {...mTts.startSpeaking( textBeSpeak, new MySynthesizerListener4()) ;
}
class MySynthesizerListener4 implements SynthesizerListener {...@Overridepublic void onCompleted(SpeechError error) {if (error == null) {Speech2();} else if (error != null ) {// showTip(error.getPlainDescription( true));}}...
}

该函数根据if条件判断当程序正常执行时,调用Speech2(),其作用是:启动路况识别功能并获取目的地。

5.5 speakText3()的作用

代码示例

private void speakText3(String textBeSpeak) {...mTts.startSpeaking( textBeSpeak, new MySynthesizerListener2()) ;
}
class MySynthesizerListener3 implements SynthesizerListener {...@Overridepublic void onCompleted(SpeechError error) {if (error == null) {notifyAll();}else if (error != null ) {}}...
}

该函数根据if条件判断程序正常执行时调用notifyAll(),其作用是:使得所有功能函数可再执行。

其中:

Java Object notifyAll() 方法

用于唤醒在该对象上等待的所有线程。notifyAll() 方法跟 notify() 方法一样,区别在于 notifyAll() 方法唤醒在此对象监视器上等待的所有线程,notify() 方法是一个线程。如果当前线程不是对象监视器的所有者,那么调用 notifyAll() 方法同样会发生 IllegalMonitorStateException 异常。(确保所有线程都有一次再执行的权力)


总结

嵌入式系统,基于Android+科大讯飞语音识别、语音合成、语音提示技术以及RFID射频识别技术、蓝牙连接、路况标识等功能集合而成的导航语音识别合成之读后听写语音识别(功能函数调用)

Android导航语音识别——读后听写语音识别(嵌入式)相关推荐

  1. Android导航语音识别——语音听写(嵌入式)

    嵌入式项目之Android导航语音识别--语音听写 文章目录 系列文章目录 前言 一.原理流程图 二.语音听写 1.初始化无ui识别听写 2.设置识别监听器 3.启动功能 总结 前言 最近在学习嵌入式 ...

  2. stm32的语音识别_基于STM32的嵌入式语音识别模块设计实现

    介绍了一种以ARM为核心的嵌入式语音识别模块的设计与实现.模块的核心处理单元选用ST公司的基于ARM Cortex-M3内核的32位处理器STM32F103C8T6.本模块以对话管理单元为中心,通过以 ...

  3. 语音识别的原理_语音识别原理_语音识别原理框图 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 深入浅出地介绍了基于hmm的语音识别的原理,不注重公式的细节推导而是着重阐述公式背 ...

  4. 英文语音识别_英文语音识别软件_英文语音识别翻译 - 云+社区 - 腾讯云

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 语音识别功能是否支持英文识别? 2. 语音识别是否支持离线命令词识别?3 ...

  5. 长语音识别_长文本语音识别_语音 识别 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 录音文件识别请求,数据结构,android sdk,ios sdk,自学习模型,使 ...

  6. 语音识别技术是什么 语音识别基本方法介绍【图文】

    语音识别技术,语音识别技术是什么意思 语音识别技术,也被称为自动语音识别Automatic Speech Recognition,(ASR),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,例 ...

  7. 语音识别英语_英语语音识别_英语 语音识别 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 腾讯云语音识别服务开放实时语音识别.一句话识别和录音文件识别三种服务形式,满足不同 ...

  8. 离线语音识别库_离线语音识别_离线语音识别sdk - 云+社区 - 腾讯云

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 但录音存储成单声道 识别结果是否可以把两人的对话分离开采样率普通话录音文 ...

  9. 免费语音识别成文字_免费在线语音识别成文字_语音识别文字免费软件 - 云+社区 - 腾讯云...

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 腾讯云语音识别(asr) 为开发者提供语音转文字服务的最佳体验. 语音识 ...

最新文章

  1. 从工程中删除Cocoapods
  2. netstat 查看监听的端口程序
  3. unity 解决引入dlopen api的问题
  4. 星跃计划 | 新项目持续招募中!MSR Asia-MSR Redmond 联合科研计划邀你申请!
  5. error: style attribute '@android:attr/windowEnterAnimation' not found
  6. java 重载 equals_实现Student类的equals重载函数
  7. 【C语言】《程序设计基础(C语言)》自编题解索引
  8. 使用fiddler获取手机上的数据
  9. 积分路径上有奇点的积分_【Euler积分】Ch 2. Gamma函数的定义
  10. mysql数据库语法——(六)
  11. 夜间灯光数据下载(DMSP/OLS,NPP/VIIRS、珞珈一号网址)
  12. python 逻辑回归_不会Python没问题!用Excel实现简单的逻辑回归!
  13. 回头看看中国互联网二十年,未来很清晰
  14. erp管理软件是什么
  15. MathCAD14破解版
  16. python复数什么意思_python 复数是什么意思
  17. GPS定位(四)-经纬度格式转换-(互转 度转度分秒 度分秒转度……)
  18. CSS / 三大特性+盒子模型+PS基础
  19. Java job interview:公司项目Java开发走进软件世界
  20. 项目管理工具—思维导图

热门文章

  1. 海康明眸测温及身份证SDK接口C#编程小结
  2. PCI设备的DMA映射操作详解
  3. 软件设计师 程序设计语言
  4. 棋盘问题(多少正方形长方形)
  5. 回文联对联大全_《回文对联集锦》序
  6. CVPR2018 目标检测(object detection)算法总览
  7. Linux运维工程师面试题(1)
  8. python自动微信发消息代码
  9. 【Lua学习笔记】lua安装及Sublime编辑器配置
  10. 高等数学:第十二章 微分方程(3)高阶线性微分方程、二阶常系数齐次线性微分方程