百度语音REST API -- 简单Demo

本文档介绍了如何在Android Studio 2.3.3上使用百度语音REST API。通过添加网络权限,实现MainActivity.java、AuthService.java和UploadAudio.java等关键代码,配合AndroidManifest.xml配置,实现了语音识别功能。示例代码中,成功识别了k16.pcm文件,得到“北京科技馆”,但test.pcm文件因3301错误码未能识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先到百度语音官网上查看语音识别API
这里写图片描述


然后再去下载识别、合成 REST API 开发文档、示例代码
这里写图片描述

大概了解一下Sample.java里面的使用方式


我就直接上代码了,我是在Android Studio 2.3.3 平台上编译的
1、AndroidManifest.xml
这里只是添加了一个网络权限,其他都没动

<uses-permission android:name="android.permission.INTERNET"/>

2、MainActivity.java

package com.sky.baiduspeechwithrestapi;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.io.IOException;
import java.io.InputStream;

/**
 * REST API 就是将音频文件转换成某种特定格式,通过 http 请求发送给百度语音识别的服务器,
 * 再由百度语音识别的服务器进行语音识别,最后返回识别出的文本.
 *
 * 使用的方式简单说来是
 * 1、根据百度语音识别官方网站提供的App ID 和 API Key 获取 accessToken。
 * 2、根据上一步的 accessToken 连同其它请求参数一起向百度语音识别网关发出请求,获得识别的文本。
 *
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
   

    private static final String TAG = "MainActivity";
    protected Button btnSendAudioFile;
    protected TextView tvShowRespondMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
        btnHandle();
    }

    private void btnHandle() {
        btnSendAudioFile.setOnClickListener(this);
    }

    private void initView() {
        btnSendAudioFile = (Button)findViewById(R.id.btnSendAudioFile);
        tvShowRespondMessage = (TextView)findViewById(R.id.tvShowRespondMessage);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btnSendAudioFile:
                sendAudioFile();
                break;
            default:
                break;
        }
    }

    private void sendAudioFile() {
        new Thread(new Runnable() {
            @Override
            public
(1)项目简介 这个demo简单,是一个记账小工程。用户可以注册、修改密码,可以记账、查找记账记录等。 (2)接口介绍 用户操作相关: post /users 用户注册 post /users/login 用户登录(这里我把login当成一个名词) put /users/pwd?userId=xxx&sign=xxx 用户修改密码 delete /users?uerId=xxx&sign=xxx 删除用户 记账记录操作相关: post /records?userId=xxx&sign=xxx 增加一条记账记录 get /records/:id?userId=xxx&sign=xxx 查询一条记账记录详情 put /records/:id?userId=xxx&sign=xxx 修改一条记账记录详情 get /records?查询参数&userId=xxx&sign=xxx 分页查询记账记录 delete /records/:id?userId=xxx&sign=xxx 删除一条记账记录 其中url中带sign参数的表示该接口需要鉴权,sign必须是url中最后一个参数。具体的鉴权方法是:用户登录后,服务器生成返回一个token,然后客户端要注意保存这个token,需要鉴权的接口加上sign签名,sign=MD5(url+token),这样可以避免直接传token从而泄露了token。这里我觉得接口最好还带一个时间戳参数timestamp,然后可以在服务端比较时间差,从而避免重放攻击。而且这样还有一个好处,就是如果有人截获了我们的请求,他想伪造我们的请求则不得不改时间戳参数(因为我们在服务器端会比较时间),这样一来sign势必会改变,他是无法得知这个sign的。如果我们没有加时间戳参数的话,那么,他截获了请求url,再重发这个请求势必又是一次合法的请求。我在这里为了简单一些,就不加时间戳了,因为这在开发测试阶段实在是太麻烦了。 (3)关于redis和数据库的说明 服务端在用户登录后,生成token,并将token保存到redis中。后面在接口鉴权的时候会取出token计算签名MD5(除sign外的url+token),进行比对。 这个demo搭建了一个redis主从复制,具体可以参考:http://download.youkuaiyun.com/detail/zhutulang/9585010 数据库使用mysql,脚本在 src/main/resources/accounting.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值