语音合成和识别接口

语音合成接口整理_各平台语音合成接口 目前语音合成接口比较成熟,可以使用的平台也比较多,使用方式和价格也打不相同。 一、腾讯云 功能: 1.基础语音合成API(短文本合成API) 2.长文本语音合成API 3.实时语音合成API 在线文档:https://cloud.tencent.com/product/tts 价格方案:先看免费,收费情况点击去官网 语音合成免费额度为800万字符,仅支持通用与实时语音合成接口。免费资源包自您领取成功后起三个月内有效,一个账号只能领取一次。 二、百度云 功能: 基础语音合 阅读详情

第一步:导入jar包
再libs文件夹,导入Msc.jar和Sunflower.jar,还有so包(这个要看手机是什么芯片)。

第二步:代码
MainActivity:

package com.example.speechtest2;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
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.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;
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.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
import com.iflytek.thirdparty.t;


public class MainActivity extends ActionBarActivity
{
    //private static String TAG = TtsDemo.class.getSimpleName();

    private TextView hello;
    private Button btnButton;
    // 语音合成对象
    private SpeechSynthesizer mTts;

    // 默认发音人
    private String voicer = "xiaoyan";

    private String[] mCloudVoicersEntries;
    private String[] mCloudVoicersValue ;

    // 缓冲进度
    private int mPercentForBuffering = 0;
    // 播放进度
    private int mPercentForPlaying = 0;

    // 云端/本地单选按钮
    private RadioGroup mRadioGroup;
    // 引擎类型
    private String mEngineType = SpeechConstant.TYPE_CLOUD;

    private Toast mToast;
    private SharedPreferences mSharedPreferences;

    public String xString = null;

    private SpeechRecognizer mIat;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        hello = (TextView)findViewById(R.id.hello);
        btnButton = (Button)findViewById(R.id.btn);
        btnButton.setOnClickListener(t);
        //认证接口
        SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID+"=xxxx,usr=xxxx,pwd=xxxx");

        // 初始化合成对象
        mTts = SpeechSynthesizer.createSynthesizer(getApplicationContext(), null);
        //合成发音人
        mTts.setParameter(SpeechConstant.VOICE_NAME, "vixm"); 
        //设置合成返回音频的语速
        mTts.setParameter(SpeechConstant.SPEED, "50");
        //设置合成返回音频的音量
        mTts.setParameter(SpeechConstant.VOLUME, "80");
        //设置使用的引擎类型:在线、离线、混合。TYPE_CLOUD:云端引擎;TYPE_LOCAL:本地引擎;TYPE_MIX:混合引擎;
        mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);
        //设置路径
        mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory()+"/tts.wav");
        String text = "你好";
        //开始合成
        mTts.startSpeaking(text, mTtsListener);

        //语音识别
        mIat = SpeechRecognizer.createRecognizer(getApplicationContext(), null);
        //支持的应用领域,iat:短信和日常用语;video:视频;poi:地图; music:音乐
        mIat.setParameter(SpeechConstant.DOMAIN, "iat");
        //语言区域,简体中文:zh_cn(默认);美式英文:en_us
        mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        //方言,普通话:mandarin(默认);粤 语:cantonese;四川话:lmz;河南话:henanese
        mIat.setParameter(SpeechConstant.ACCENT, "cantonese ");
        //开始录音
        mIat.startListening(mRecoListener);
    }

    private OnClickListener t =new OnClickListener(){

        @Override
        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            mIat.startListening(mRecoListener);
        }

    };

    //听写监听器
    private RecognizerListener mRecoListener = new RecognizerListener(){
    //听写结果回调接口(返回Json格式结果,用户可参见附录13.1);
    //一般情况下会通过onResults接口多次返回结果,完整的识别内容是多次结果的累加;
    //关于解析Json的代码可参见Demo中JsonParser类;
    //isLast等于true时会话结束。
    public void onResult(RecognizerResult results, boolean isLast) {
        Toast.makeText(getApplicationContext(), results.getResultString(), 500).show();
        xString = xString+results.getResultString();
        hello.setText(xString);
    }

    //会话发生错误回调接口
    public void onError(SpeechError error) {
    //打印错误码描述
    //Log.d(TAG, "error:" + error.getPlainDescription(true)); 
    }
    //开始录音
    public void onBeginOfSpeech() {}
    //volume音量值0~30, data音频数据
    public void onVolumeChanged(int volume, byte[] data){}
    //结束录音
    public void onEndOfSpeech() {}
    //扩展用接口
    public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {}

    };

    /**
     * 合成回调监听。
     */
    private SynthesizerListener mTtsListener = new SynthesizerListener() {

        @Override
        public void onSpeakBegin() {
            showTip("开始播放");
        }

        @Override
        public void onSpeakPaused() {
            showTip("暂停播放");
        }

        @Override
        public void onSpeakResumed() {
            showTip("继续播放");
        }

        @Override
        public void onBufferProgress(int percent, int beginPos, int endPos,
                String info) {
            // 合成进度
            mPercentForBuffering = percent;
        }

        @Override
        public void onSpeakProgress(int percent, int beginPos, int endPos) {
            // 播放进度
            mPercentForPlaying = percent;
        }

        @Override
        public void onCompleted(SpeechError error) {
            if (error == null) {
                showTip("播放完成");
            } else if (error != null) {
                showTip(error.getPlainDescription(true));
            }
        }

        @Override
        public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
            // 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因
            // 若使用本地能力,会话id为null
            //  if (SpeechEvent.EVENT_SESSION_ID == eventType) {
            //      String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);
            //      Log.d(TAG, "session id =" + sid);
            //  }
        }
    };

    private void showTip(final String str) {
        mToast.setText(str);
        mToast.show();
    }
}

activity_main.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.speechtest2.MainActivity" >

    <TextView
        android:id="@+id/hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button 
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="重新再讲"
        android:layout_below="@+id/hello"
        />

</RelativeLayout>

AndroidManifest.xml
把以下代码放在后面

    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <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.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

语音识别返回的是json,如:

{"sn":1,"ls":false,"bg":0,"ed":0,"ws":[{"bg":0,"cw":[{"sc":0.00,"w":"有"}],{"bg":0,"cw":[{"sc":0.00."w":"搞"}],{"bg":0,"cw":[{"sc":0.00,"w":"啊"}]}]}{"sn":2,"ls":true,"bg":0,"ed":0,"ws":[{"bg":0,"cw":[{"sc":0.00,"w":"。"}]}]}
在Unity 中实现Windows端讯飞SDK的语音识别、语音合成功能的相关要点总结       前段时间因为项目中需要用到讯飞SDK来实现语音识别以及语音合成的功能,但因为是要在Unity构建的项目里实现这些功能,编程语言的不同以及Unity本身的特性使得讯飞SDK要用在Unity上有一定的困难。经过从网上查找的一些资料以及自己的一些尝试,总算是将语音识别以及合成的功能给实现了,以下总结一下在功能实现过程中的一些经验教训:     (1)从讯飞官网上查找的Windows端API文... 阅读详情

相关推荐

ros下基于百度语音的,语音识别和语音合成

&gt; 代码地址如下:&lt;br&gt;http://www.demodashi.com/demo/13153.html &gt; #概述: 本demo是ros下基于百度语音的,语音识别和语音合成,能够实现文字转语音,语音转文字的功能。 &gt;#详细: ##1. 安装库与环境 首先确保已经安装了以下两个库文件。 ###1.1 Python 音频处理库 PyAudio py...

findhappy117的博客 747

Android集成科大讯飞SDK

Android集成科大讯飞SDK        上一篇文章为大家讲解了如何成为科大讯飞开发者,以及如何下载科大讯飞SDK;今天为大家讲解如何将我们下载好的SDK集成到Android项目中去。首先我们刚解压好的SDK是这个样子的。1、打开Android studio创建一个新工程,(切换到project目录模式)。将SDK中libs文件夹中的两个jar(Msc.jar和Sunflower.jar)包...

小小本科生 8701

Sunflower.jar

较为准确的语音识别,体积小,识别快,适合微型应用,快捷开发

科大讯飞语音合成实例

代码地址如下:http://www.demodashi.com/demo/13209.html 前言 今天讲讲科大讯飞的语音合成功能吧 涉及以下内容: 在科大讯飞平台上创建应用 在androidstudio中的配置 语音合成相关代码 语音合成工具类SpeechHelper的调用 使用过程中需要注意的问题 项目结构图 一. 在科大讯飞平台上创建应用 先登录科大讯飞开发者平台,进入控制台,然后...

weixin_34262482的博客 2026

Android sunflower范例

Android开发的sunflowe范例,对你学习android开发可能会有帮助

Sunflower(语音识别)

android 语音识别,体积小,翻译快速,准确率还是挺高的,

Vue --- 统一封装axios的接口请求,并解决多个域名接口的请求问题

https://blog.csdn.net/qq_21980517/article/details/103425378?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

在知识的海洋里遨游 642

sunflower.zip

springboot学习-整合 Swagger2 Swagger2 注解整理 Api:修饰整个类,描述Controller的作用 ApiOperation:描述一个类的一个方法,或者说一个接口 ApiParam:单个参数描述 ApiModel:用对象来接收参数 ApiProperty:用对象接收参数时,描述对象的一个字段 ApiResponse:HTTP响应其中1个描述 ApiResponses:HTTP响应整体描述 ApiIgnore:使用该注解忽略这个API ApiError :发生错误返回的信息 ApiImplicitParam:一个请求参数 ApiImplicitParams:多个请求参数 原文链接:https://blog.csdn.net/sdwujk160507140150/article/details/104204727

九十三、Python使用百度云接口API实现截图,文字识别和语音合成

在实际的业务中,难免会跟第三方系统进行数据的交互与传递,其实就是写接口API的。今天就开始第九十三篇、Python使用百度云接口API实现截图,文字识别和语音合成

微信号:RunsenLiu 2083

实战分享:如何利用svchost进程绕过360防护(附完整Shellcode注入教程)

本文深入解析系统进程安全防护机制,探讨svchost等关键进程的安全特性与防护策略。详细分析安全软件的行为检测和内存保护技术,提供系统加固与监控实践建议,助力企业构建多层次防御体系,有效应对潜在安全威胁。

weixin_30752699的博客 99

多雷达协同探测技术研究进展:认知跟踪与资源调度算法

源自:雷达学报作者:易伟 袁野 刘光宏 葛建军 孔令讲 杨建宇雷达是信息感知的千里眼,具有极高的军用和民用价值,广泛应用在防空预警、遥感测绘、反恐维稳等领域[1–5]。雷达信息获取与探测技术也一直是大国竞相抢占的前沿技术,同时是信息科学的重要组成部分。随着科学技术不断进步,先进电子对抗装备的不断问世和广泛列装,雷达的生存与发展正面临日益严峻的挑战。从生存环境上看,雷达面临通信等各类民用电磁干扰以及复杂的军用电磁干扰;从探测对象上看,集群、微弱、隐身、高空、低空等多样化目标的出现也给雷达探测与识别带来困难。

renhongxia1的博客 2784

C#窗体程序 调用接口 实现 语音识别和语音合成

C#窗体程序 调用接口 实现 语音识别和语音合成

zyugaagin的博客 1528

Gradient Accumulation 梯度累加/梯度累积 (Pytorch)

我们在训练神经网络的时候,batch_size的大小会对最终的模型效果产生很大的影响。一定条件下,batch_size设置的越大,模型就会越稳定。batch_size的值通常设置在 8-32 之间,但是当我们做一些计算量需求大的任务(例如语义分割、GAN等)或者输入图片尺寸太大的时候,我们的batch size往往只能设置为2或者4,否则就会出现 “CUDA OUT OF MEMORY” 的不可抗力报错。 那么如何在有限的计算资源的条件下,训练时采用更大的batch size...

hxxjxw的博客 5817

Python2.7对接科大讯飞的语音合成和语音识别接口

小Z正在尝试科大讯飞的语音合成和语音识别的接口调用。需要注意的是:1.白名单要在我的应用中配置,生效有5到10分钟的延迟,配置不正确会报错: {"code":"10105","data":"","desc":"illegal access|illegal client_ip: XXXXXX","sid":"XXXX"}2.语音识别和语音合成使用不同的

小Z的部落格 1万+

从扇束到平行束:等角重排算法在CT重建中的核心原理与MATLAB实践

本文深入解析了CT图像重建中等角扇束重排算法的核心原理与MATLAB实现。通过将实际采集的扇束投影数据,利用几何映射和两次关键插值,转换为适用于经典滤波反投影算法的平行束数据,打通了高效重建的关键路径。文章结合Shepp-Logan模型仿真,提供了完整的MATLAB代码实践,并分析了源-物距、采样率等关键参数对重建质量的影响。

cnn8visionary的博客 647

论文阅读:NeurIPS 2024 JailbreakBench: An Open Robustness Benchmark for Jailbreaking Large Language Model

论文指出评估越狱攻击存在挑战,如缺乏评估标准、成本和成功率计算方法不一致、许多研究无法复现。为解决这些问题,作者提出了JailbreakBench,这是一个开源基准测试,包含以下组件:持续更新的越狱提示库(jailbreak artifacts)。包含100种行为的越狱数据集,符合OpenAI的使用政策。标准化的评估框架,包括威胁模型、系统提示、聊天模板和评分函数。跟踪各种LLMs攻击和防御性能的排行榜。

CSPhD-winston的博客 1433

【语音识别学习】Linux下用Python实现科大讯飞语音识别和语音合成接口调用(github源码)

最近要跟着导师做一个语音识别的工程项目,由于在前期只需要快速的建立软件架构,所以选择使用科大讯飞提供的云接口进行快速开发,但科大讯飞在Linux的sdk中只提供了c++的实现,为了今后的开发方便,我将其进行了Python封装,也把源码分享在这里,为大家提供方便。 一、概述       虽然在我的github源码中已经写了README,...

Johnson的博客 4845

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

Robot_PLC_HMI_Automation 6100

使用百度ai进行文字识别、语音合成

本文主要介绍使用百度ai创建应用来进行文字识别+语音合成,以及本项目的简单介绍

weixin_48837584的博客 2365

【Python】秋招机考 —— 2025/9/17 华为 AI 方向

秋招机考,华为 AI,使用 Python 完成编程。

一杯水果茶!足矣~ 1166

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【Unity】 HTFramework框架(二十八)Speech语音合成、语音识别

更新日期:2019年12月30日。 Github源码:[点我获取源码] 索引Speech语音合成、语音识别简介使用Speech语音合成设置TOKEN开始合成编辑器内语音合成语音识别设置TOKEN开始识别 Speech语音合成、语音识别简介 对接百度AI开放平台,封装的语音技术接口。 使用Speech 语音合成 设置TOKEN 语音合成需要鉴权认证的通行令牌TOKEN,登录百度AI开放平台控制台...

神码编程 3521

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

利用百度API进行语音识别,语音合成

python调用百度API进行语音识别,语音合成。

qq_45401815的博客 2408

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C语言制作的讯飞语音合成、识别、唤醒标准调用接口DLL

C语言制作的讯飞语音合成、实时语音短语音文件识别、唤醒标准调用接口DLL。有需要源码的同志请联系我。

xycwr的专栏 3541

stm32语音播报_TTS语音模块:XFS5152CE语音合成模块详解

TTS是Text To Speech的缩写,即"从文本到语音",是人机对话的一部分,让机器能够说话。语音播报功能的实现方式TTS语音模块,比如XFS5152、SYN6288等ISD4000系列语音录放芯片分段输出可以按键、UART控制的mp3解码芯片模块OTP(One Time Programable)语音芯片[可定制]其中TTS语音模块使用起来最方便灵活,OTP语音芯片最简单。本文将介绍一下科大...

weixin_39611937的博客 8581

QT集成讯飞语音合成和语音识别

在讯飞AndroidSDK基础上进行了针对QT的封装: 使用方法: 1.下载libmsc.so文件 开发工具包里边复制; 2.复制jar文件到libs文件夹; 3.定义JHXunfei private static JHXunfei xunfei=null; 4.定义回掉XFCallBack XFCode { Rec_Begin, Rec_End, Rec_Result, Rec_...

wertertwtyetytey的博客 6193
上一篇: 树莓系统安装+网络(杂记)
下一篇: firewall杂记
大大蘑菇猪
博客等级 码龄18年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值