语音云的讯飞语音开放介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音云的讯飞语音开放介绍相关的知识,希望对你有一定的参考价值。

参考技术A

近年来国内外IT巨头纷纷投入巨资加大对智能语音技术市场的争夺,科大讯飞作为亚太地区最大的语音上市公司,拥有全球领先的中文智能语音技术,多年来一直致力于研发将语音技术应用到千家万户,MSP(iFLY Mobile Speech Platform)便在此背景下诞生。通过MSP,移动互联网的终端用户可以随时随地的使用语音服务。语音技术带来品质生活,始终是MSP团队所坚持不懈的理念。
主要功能
iFLY Mobile Speech Platform(以下简称MSP)是一个应用于移动互联网的语音服务平台,其主要目标是:
1)实现可面向移动2G/3G网络及互联网提供语音服务的服务器,在现有科大讯飞电信级语音服务平台ISP基础上为移动终端应用程序提供多路并发的语音合成、语音识别、语音听写功能,通过架设在互联网的语音应用服务器,用户可以随时随地获得高质量的语音服务;
2)实现基于移动终端以及桌面平台的语音应用客户端,提供统一的语音应用开发接口,通过该接口用户可以方便、快速地开发语音应用;同时,MSP也将开放一些基于移动以及桌面平台的语音应用,用于展示MSP语音服务平台的功能和使用方法,让用户直接体验到最新的语音技术;
MSP最终提供了架构于互联网的语音云服务和一套移动互联网语音解决方案、应用示例,把语音服务的应用范围拓宽到移动互联网领域,为语音服务产品走向移动互联网市场开辟全新的应用模式。
MSP平台整合了科大讯飞研究院、中国科技大学讯飞语音实验室以及清华大学讯飞语音实验室在语音识别、语音合成等技术上多年的技术成果,语音核心技术上达到了国际领先水平。
MSP系统采用分布式架构,继承了科大讯飞成熟的电信级语音平台高稳定的特点,可以满足电信级应用的高可靠性、高可用性要求。针对传统语音应用集成开发困难,业务设计繁琐的问题,MSP产品大大简化了集成开发和业务开发的复杂度,为系统集成人员和业务开发人员提供了便捷、高效的开发环境。
MSP作为一个向互联网和移动互联网开放的语音引擎,提供了功能完善、简单易用的集成开发接口,以便开发人员能够将其与应用程序进行集成,实现具有完整语音能力的应用。MSP提供的主要开发接口从提供功能考虑可以分为语音识别(包含语音听写)、语音合成开发
接口和语音检测开发接口:
1)语音识别开发接口  语音识别接口(QISR)是应用开发者使用识别引擎和语音听写引擎进行语音应用开发所必需使用的接口,该接口接受用户输入的语音,把语音识别结果返回给应用程序。
2)语音合成开发接口  语音合成接口(QTTS)可以让应用开发者在应用程序中集成讯飞语音合成引擎的功能,该接口接受应用程序传入的文本内容,返回符合应用要求格式的音频数据。
3)语音检测开发接口  语音检测(VAD)是语音识别一个重要的输入环节,用于判断用户语音何时开始、何时结束,该接口集成在MSC客户端内部,通过QISR接口的参数来返回语音状态。
移动互联网应用程序需要使用在成千上万各式各样的用户终端之上,用户终端类型从非智能终端到智能终端、从手机到智能玩具、从PC到互联网电视,应用操作系统环境形形色色、品类众多。为了满足各类客户端操作系统环境上都能够使用讯飞语音云提供的语音功能,MSC为多种终端环境提供了语音开发接口,主要包含androidios、Windows Phone、Windows、Linux、Java、Flash等。
基于讯飞语音云,第三方开发者可以通过集成SDK,轻松实现产品的语音能力,基于讯飞语音云诞生了一批有代表性的产品。
讯飞输入法
全球首创“蜂巢”输入模型,独家支持拼音、手写、语音“云+端”立体输入引擎。讯飞输入法,创造极致输入体验!
灵犀语音助手
由科大讯飞和中国移动共同打造的贴心生活小秘书,基于科大讯飞语音云、语义云,能够完美支持普通话及部分方言,更能深入理解用户的对话,智能的提供相应的服务。灵犀语音助手集打电话、发短信、设置提醒、音乐查找与播放、打开应用、餐饮美食、火车航班、查询天气、查询股票、查询酒店、查询话费流量等众多生活领域。
讯飞语音+
面向终端用户与开发者提供不同的功能。
终端用户提供的微信输入助手,通过语音在微信中直接快速输入文字,让你成为输入达人不再是梦!  
面向开发者提供语音合成、语音识别、语音唤醒等能力,轻松集成,就能让你的应用实现能听会说。

语音识别语音合成使用基础(讯飞开放平台)

1.在http://www.xfyun.cn进入讯飞开放平台。

  创建应用  创建完毕  下载SDK(单个或组合下载):选择服务 选择平台 选择自己之前创的应用

2.下载完毕后,将(F:\\讯飞开放平台\\Android_voice_1098_574d92ab\\libs)libs里面的Msc.jar、armeabi复制到项目中

其中在官网的资料库-开发集成-Android平台有教你怎么使用。

例子:

1.布局分布如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.yzxvoice.MainActivity" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="listen"
        android:text="语音听写(音转句)无提示" />
     <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="listenui"
        android:text="语音听写有(音转句)提示" />

     <TextView
         android:id="@+id/UI1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="tv" />

      <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="speak"
        android:text="语音合成(句转音)" />

</LinearLayout>

2.在工程AndroidManifest.xml文件中添加如下权限:

<!--连接网络权限,用于执行云端语音能力 -->  
<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"/>  

3.MainActivity.java

package com.example.yzxvoice;

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.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 将“12345678”替换成您申请的APPID,申请地址:http://open.voicecloud.cn
        SpeechUtility.createUtility(this, SpeechConstant.APPID + "=574d92ab");
    }

    /*
     * 语音合成
     */
    public void speak(View v) {
        // 1.创建SpeechSynthesizer对象, 第二个参数:本地合成时传InitListener
        SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(this, null);
        // 2.合成参数设置,详见《科大讯飞MSC API手册(Android)》SpeechSynthesizer 类
        mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");// 设置发音人
        mTts.setParameter(SpeechConstant.SPEED, "50");// 设置语速
        mTts.setParameter(SpeechConstant.VOLUME, "80");// 设置音量,范围0~100
        mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); // 设置云端
        // 设置合成音频保存位置(可自定义保存位置),保存在“./sdcard/iflytek.pcm”
        // 保存在SD卡需要在AndroidManifest.xml添加写SD卡权限
        // 如果不需要保存合成音频,注释该行代码
        mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, "./sdcard/iflytek.pcm");
        // 3.开始合成
        mTts.startSpeaking("床前明月光,疑是地上霜,举头望明月,低头思故乡", new MySynListener());
    }

    class MySynListener implements SynthesizerListener {
        // 缓冲进度回调
        // percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。
        @Override
        public void onBufferProgress(int percent, int beginPos, int endPos, String info) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onCompleted(SpeechError arg0) {
            // TODO Auto-generated method stub

        }

        // 会话事件回调接口
        @Override
        public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
            // TODO Auto-generated method stub

        }

        // 开始播放
        @Override
        public void onSpeakBegin() {
            // TODO Auto-generated method stub

        }

        // 暂停播放
        @Override
        public void onSpeakPaused() {
            // TODO Auto-generated method stub

        }

        // 播放进度回调
        // percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.
        @Override
        public void onSpeakProgress(int percent, int beginPos, int endPos) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onSpeakResumed() {
            // TODO Auto-generated method stub

        }

    }

    /*
     * 语音听写(有提示)
     */
    public void listenui(View v) {
        // 1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListener
        RecognizerDialog iatDialog = new RecognizerDialog(this, null);
        // 2.设置听写参数,同上节
        iatDialog.setParameter(SpeechConstant.DOMAIN, "iat");
        iatDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        iatDialog.setParameter(SpeechConstant.ACCENT, "mandarin ");
        // 3.设置回调接口
        iatDialog.setListener(new MyRecognizerDialogListener());
        // 4.开始听写
        iatDialog.show();
    }

    class MyRecognizerDialogListener implements RecognizerDialogListener {

        @Override
        public void onError(SpeechError arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onResult(RecognizerResult result, boolean arg1) {
            // TODO Auto-generated method stub
            System.out.println("ui:" + result.getResultString());
            TextView tv = (TextView) findViewById(R.id.UI1);
            tv.append(result.getResultString());
        }

    }

    /*
     * 语音听写(无提示)
     */
    public void listen(View v) {
        // 1.创建SpeechRecognizer对象,第二个参数:本地听写时传InitListener
        SpeechRecognizer mIat = SpeechRecognizer.createRecognizer(this, null);
        // 2.设置听写参数,详见《科大讯飞MSC API手册(Android)》SpeechConstant类
        mIat.setParameter(SpeechConstant.DOMAIN, "iat");
        mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        mIat.setParameter(SpeechConstant.ACCENT, "mandarin ");
        // 3.开始听写
        mIat.startListening(new MyRecoListenerListener());
        // 听写监听器
    }

    class MyRecoListenerListener implements RecognizerListener {

        @Override
        public void onBeginOfSpeech() {
            // TODO Auto-generated method stub

        }

        // 结束录音
        @Override
        public void onEndOfSpeech() {
            // TODO Auto-generated method stub

        }

        @Override
        public void onError(SpeechError arg0) {
            // TODO Auto-generated method stub

        }

        // 扩展用接口
        @Override
        public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onResult(RecognizerResult result, boolean arg1) {
            // TODO Auto-generated method stub
            System.out.println(result.getResultString());
        }

        // 音量值0~30
        @Override
        public void onVolumeChanged(int volume, byte[] arg1) {
            // TODO Auto-generated method stub

        }

    }
}

  

以上是关于语音云的讯飞语音开放介绍的主要内容,如果未能解决你的问题,请参考以下文章

科大讯飞语音接口调用实现语音识别

科大讯飞语音识别

讯飞语音 使用步骤(针对androidStudio):语音转文字:

吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入

科大讯飞语音识别

重金求中科大讯飞Interphonic 5.0语音合成系统的详细安装步骤(对重金不感兴趣者勿扰)