2017-02-23 10:34:03 a1368783069 阅读数 8539
  • ORTP库局域网图传和VLC实时预览-第3/11季视频课程-...

    本季课程通过移植ORTP库并调用ORTP库函数来实现H.264裸流数据的网络传输,并且在Windows中安装VLC播放器,并在VLC中通过配置文件的方式来解析ORTP发送的裸流实现视频实时预览。本季课程的核心是ORTP协议的讲解,ORTP库的移植、部署和调用,VLC软件的用法讲解和配置文件讲解,Wireshark网络抓包工具的用法讲解,实时视频流传输和解析的体验和编程实现。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    494 人正在学习 去看看 朱有鹏

最近在处理语音检索相关的事。
其中用到语音识别,调用的是讯飞与百度的api,前者使用js是实现,后者用python3实现(因为自己使用python)

环境:

python3.5
centos 7

流程

整个百度语音识别rest api 使用分为三部分:
1 (申请操作)创建应用,获取应用的 API Key 以及 Secret Key。
2 (程序实现)通过已知的 应用的 API Key 以及 Secret Key, 发送post 请求到 https://openapi.baidu.com/oauth/2.0/token 获取 token

3 (程序实现) 通过上步骤获取的 token,通过post, 发送相关的 语音信息 到 http://vop.baidu.com/server_api ,获取识别结果.

以上过程参考百度语音开发文档,或者网上的资料:
http://yuyin.baidu.com/docs/asr/57

python实现

程序整体如下:

import requests
import json
import uuid
import base64

def get_token():
    url = "https://openapi.baidu.com/oauth/2.0/token"
    grant_type = "client_credentials"
    api_key = "NzGBYD0jPFDqVT8VHRYa****"                     # 自己申请的应用
    secret_key = "8439155b9db2040b4acd13b0c*****"            # 自己申请的应用
    data = {'grant_type': 'client_credentials', 'client_id': api_key, 'client_secret': secret_key}
    r = requests.post(url, data=data)
    token = json.loads(r.text).get("access_token")
    return token


def recognize(sig, rate, token):
    url = "http://vop.baidu.com/server_api"
    speech_length = len(sig)
    speech = base64.b64encode(sig).decode("utf-8")
    mac_address = uuid.UUID(int=uuid.getnode()).hex[-12:]
    rate = rate
    data = {
        "format": "wav",
        "lan": "zh",
        "token": token,
        "len": speech_length,
        "rate": rate,
        "speech": speech,
        "cuid": mac_address,
        "channel": 1,
    }
    data_length = len(json.dumps(data).encode("utf-8"))
    headers = {"Content-Type": "application/json",
               "Content-Length": data_length}
    r = requests.post(url, data=json.dumps(data), headers=headers)
    print(r.text)


filename = "two.wav"

signal = open(filename, "rb").read()
rate = 8000

token = get_token()
recognize(signal, rate, token)

同时,获取语音信息可以通过:

import scipy.io.wavfile
filename = "two.wav"
rate, signal = scipy.io.wavfile.read(filename=filename)

这里写图片描述

2016-01-13 17:32:18 maoqingyu 阅读数 1756
  • ORTP库局域网图传和VLC实时预览-第3/11季视频课程-...

    本季课程通过移植ORTP库并调用ORTP库函数来实现H.264裸流数据的网络传输,并且在Windows中安装VLC播放器,并在VLC中通过配置文件的方式来解析ORTP发送的裸流实现视频实时预览。本季课程的核心是ORTP协议的讲解,ORTP库的移植、部署和调用,VLC软件的用法讲解和配置文件讲解,Wireshark网络抓包工具的用法讲解,实时视频流传输和解析的体验和编程实现。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    494 人正在学习 去看看 朱有鹏

语音识别api主要功能是将声音转换为文字显示;声音文件大小不超过1M,长度不超过10min;支持声音文件采样率16000或者8000,采样精度16bit;单声的pcm或者wav格式的音频。

接口名称:语音识别api

接口地址:聚合数据

口地址:http://japi.juhe.cn/voice_words/getWords

支持格式:json

请求方式:post

请求示例:http://japi.juhe.cn/voice_words/getWords

请求参数说明:

名称

类型

必填

说明

key

String

APP Key

file

File

上传的音频文件(采样率16k或者8k(rate),采样精度16bit(bit),单声道的pcm或者wav格式的音频)

rate

String

采样率(16000或者8000)

pname

String

包名

device_id

String

标记请求来源的标识,如用户所设备序列号 (SN)IMEIMAC地址等

返回参数说明:

名称

类型

说明

JSON返回示例

-

-

语音识别api调用JSON返回示例:

{
    "reason": "success!!",
    "error_code": 0,
    "result": "云知声专注于智能语音识别及语言处理技术,拥有完全自主知识产权的世界顶尖的智能语音识别技术。"/*识别结果*/
}


2018-04-19 23:31:35 JackyTintin 阅读数 4028
  • ORTP库局域网图传和VLC实时预览-第3/11季视频课程-...

    本季课程通过移植ORTP库并调用ORTP库函数来实现H.264裸流数据的网络传输,并且在Windows中安装VLC播放器,并在VLC中通过配置文件的方式来解析ORTP发送的裸流实现视频实时预览。本季课程的核心是ORTP协议的讲解,ORTP库的移植、部署和调用,VLC软件的用法讲解和配置文件讲解,Wireshark网络抓包工具的用法讲解,实时视频流传输和解析的体验和编程实现。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    494 人正在学习 去看看 朱有鹏

腾讯 AI 开放平台 开放了语音、图像等多种 AI 功能接口。本文尝试基于 python 完成对语音识别接口的本地调用。

1. 准备工作

API 调用需要身份认证。我们首先需要注册并获得 AppID 和 AppKey。

官网注册后,进入控制台,创建一个新应用,并在接口选择栏,为应用勾选“语音识别”。应用创建成功后,记下 AppID 和 AppKey。

2. 接口鉴权

接口鉴权的要求见官方说明。为完成鉴权,我们需要定义一些辅助函数,代码见这里

2.1 哈希

认证需要用到 MD5 哈希算法,这里我们调用 hashlib 库的实现。

import hashlib

def md5(string):
    md = hashlib.md5()
    md.update(string)
    md5 = md.hexdigest().upper()
    return md5

2.2 签名

认证要求使用包括 AppKey 在内的参数拼接字符串的 MD5 值做为签名,其中 AppKey 要位于字条串最后:

def signify(args, app_key):
    query_str = urlencode(args)
    query_str = query_str + '&app_key=' + app_key
    signiture = md5(query_str)
    return signiture

参数需要按键值排序,实现如下:

import urllib

def urlencode(args):
    tuples = [(k, args[k]) for k in sorted(args.keys()) if args[k]]
    query_str = urllib.urlencode(tuples)
    return query_str

3. 语音识别

语音识别接口的具体调用信息见官网说明,提供了整段语音和流式两种调用方式。这里我们识别整段语音识别及 AI Lab 流式语音识别两个接口的调用。完成代码见这里

调用使用的是 post 方式,简单封装如下:

import requests
def http_post(api_url, args):
    resp = requests.post(url=api_url, data=args)
    resp = json.loads(resp.text)
    return resp

3.1 echo 版

echo 版对整段音频进行语音识别,并返回语音的文字内容。

class BaseASR(object):
    ext2idx = {'pcm': '1', 'wav': '2', 'amr': '3', 'slk': '4'}

    def __init__(self, api_url, app_id, app_key):
        self.api_url = api_url
        self.app_id = app_id
        self.app_key = app_key

    def stt(self, audio_file, ext, rate):
        raise Exceptin("Unimplemented!")

class BasicASR(BaseASR):
    """ Online ASR from Tencent
    https://ai.qq.com/doc/aaiasr.shtml
    """
    def __init__(self, api_url='https://api.ai.qq.com/fcgi-bin/aai/aai_asr',
                 app_id='???', app_key='???'):
        super(BasicASR, self).__init__(api_url, app_id, app_key)

    def stt(self, audio_file, ext='wav', rate=16000):
        if ext == 'wav':
            wf = wave.open(audio_file)
            nf = wf.getnframes()
            audio_data = wf.readframes(nf)
            wf.close()
        else:
            raise Exception("Unsupport audio file format!")

        args = {
            'app_id': self.app_id,
            'time_stamp': str(int(time.time())),
            'nonce_str': '%.x' % random.randint(1048576, 104857600),
            'format': self.ext2idx[ext],
            'rate': str(rate),
            'speech': base64.b64encode(audio_data),
        }

        signiture = signify(args, self.app_key)
        args['sign'] = signiture
        resp = http_post(self.api_url, args)
        text = resp['data']['text'].encode('utf-8')

        if DEBUG:
            print('msg: %s, ret: %s, format: %s' %
                  (resp['msg'], resp['ret'], resp['data']['format']))

        return text

3.2 流式版(AI Lab)

class BasicStreamASR(BaseASR):
    """ Online ASR from Tencent AI Lab
    https://ai.qq.com/doc/aaiasr.shtml
    """

    def __init__(self, api_url='https://api.ai.qq.com/fcgi-bin/aai/aai_asrs',
                 app_id='???', app_key='???'):
        super(BasicStreamASR, self).__init__(api_url, app_id, app_key)

    def stt(self, audio_file, ext='wav', rate=16000, chunk=4800):
        if ext == 'wav':
            wf = wave.open(audio_file)
        else:
            raise Exception("Unsupport audio file format!")

        total_len = wf.getnframes() * wf.getsampwidth()
        seq, end = 0, '0'
        while end != '1':
            data = wf.readframes(chunk)
            length = len(data)
            end = '0' if length + seq < total_len else '1'

            args = {
                'app_id': self.app_id,
                'time_stamp': str(int(time.time())),
                'nonce_str': '%.x' % random.randint(1048576, 104857600),
                'format': self.ext2idx[ext],
                'rate': str(rate),
                'seq': str(seq),
                'len': str(length),
                'end': end,
                'speech_id': '0',
                'speech_chunk': base64.b64encode(data),
            }

            signiture = signify(args, self.app_key)
            args['sign'] = signiture
            resp = http_post(self.api_url, args)

            seq += length

            if DEBUG:
                print('seq: ', seq)
                print(resp['data']['speech_text'])

        return resp['data']['speech_text'].encode('utf-8')

4. 测试

语音必须符合 16k 或 8K 采样率、16bit 采样位数、单声道。支持 PCM、WAV、AMR、SILK 四种编码格式。这里我们只示例了无压缩的 WAV 格式。流式识别对于 AMR、SILK 的分片方式有其他要求,具体可以参见接口说明。

def test_basic_asr():
    audio_files = ['0.wav', '1.wav', '2.wav']
    asr_engine = BasicASR()
    for audio_file in audio_files:
        text = asr_engine.stt(audio_file)
        print(text)

def test_stream_asr():
    audio_files = ['0.wav', '1.wav', '2.wav']
    asr_engine = BasicStreamASR()
    for audio_file in audio_files:
        text = asr_engine.stt(audio_file)
        print(text)

小结

本文基于本地音频文件,识别了基于 python 的语音识别接口调用。基于流式掊,接合 ALSA 、PortAudio 等系统录音工具,我们实现实时的语音采样和识别。

语音识别接合语音唤醒(e.g snowboy)、静音检测(e.g. werbrtc VAD)等技术,可以实现一个简单但完整的语音交互前端(一个简单的 demo 见这里)。

2019-09-24 17:25:30 weixin_42193239 阅读数 435
  • ORTP库局域网图传和VLC实时预览-第3/11季视频课程-...

    本季课程通过移植ORTP库并调用ORTP库函数来实现H.264裸流数据的网络传输,并且在Windows中安装VLC播放器,并在VLC中通过配置文件的方式来解析ORTP发送的裸流实现视频实时预览。本季课程的核心是ORTP协议的讲解,ORTP库的移植、部署和调用,VLC软件的用法讲解和配置文件讲解,Wireshark网络抓包工具的用法讲解,实时视频流传输和解析的体验和编程实现。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    494 人正在学习 去看看 朱有鹏

 

最近想做一个智能硬件(实现单片机使用W600连接上位机或直接实现语音识别)

查看了华为云的语音交互服务SIS,有两种:录音文件识别以及一句话语音识别

名称 功能
录音文件识别

可以实现5小时以内的音频到文字的转换。支持垂直领域定制,对应领域转换效果更佳。

一句话识别 可以实现语音到文字的转换。支持垂直领域定制,对应领域转换效果更佳。

 

在看了这两种模式后,选择了一句话识别,方便在下位机方面进行开发(前些时间已经实现STM32对语音文件实现8K采样率16bit的PCM格式WAV文件生成)

跳转到一句话识别的API介绍(https://support.huaweicloud.com/api-sis/api-sis.pdf),发现使用时需要先获取该用户的token(呃 通过拨打华为云的客服电话解决了这个问题)

获取用户Token采用POST方式,地址格式为: 

 

 针对不同的服务端点选择Endpoint,后缀是相同的/v3/auth/tokens

此时使用华为云推荐的软件(Postman)来实现这个过程

使用这个地址, 进行提交

          此时会反馈你的Token(只能使用24小时),如果打算长期使用请选择SDK (https://support.huaweicloud.com/sdkreference-sis/sis_05_0004.html),目前只有JAVA格式的,本文主要介绍API方式

得到Token就可以进行语音识别啦!!这里还是使用POST的方式,此时地址会发送改变,一句话语音识别的两个服务端点为:

区域名称 终端节点(Endpoint)
华北-北京一 sis-ext.cnnorth-1.myhuaweicloud.com
华北-北京四 sis-ext.cnnorth-4.myhuaweicloud.com

 

因为我的是华北-北京四,这里选择sis-ext.cnnorth-4.myhuaweicloud.com,继续查看该API手册,发现对于提交语音数据的包格式定义如下:

此时POST地址为: https://sis-ext.cn-north-4.myhuaweicloud.com/v1/{projectid}/asr/short-audio

获取Projectid的方式:将光标放在用户名下面选择我的凭证:

得到projectid后开始发包:

 

我采用的是WAV自识别模式,使用的WAV文件为AU生成的录音文件,利用BASE64编码转换后进行发送:

 

 data数据为转码后的base64格式,因为太长就不放上来了。此时点击SEND

测试成功,本篇结束。 

2019-12-07 21:29:45 qq_43157190 阅读数 157
  • ORTP库局域网图传和VLC实时预览-第3/11季视频课程-...

    本季课程通过移植ORTP库并调用ORTP库函数来实现H.264裸流数据的网络传输,并且在Windows中安装VLC播放器,并在VLC中通过配置文件的方式来解析ORTP发送的裸流实现视频实时预览。本季课程的核心是ORTP协议的讲解,ORTP库的移植、部署和调用,VLC软件的用法讲解和配置文件讲解,Wireshark网络抓包工具的用法讲解,实时视频流传输和解析的体验和编程实现。 随着通信行业发展,网速越来越快,网络也从文本时代发展越过语音时代到了现在视频时代,“优酷、爱奇艺”、“微视频”、“直播”等的出现也是视频逐步成为主流媒体的证据和表现。航拍、视频监控、刷脸过关检测、汽车ADAS系统等应用也是视频在主流行业中的应用,因此视频的采集、编解码、传输、识别等技术变得越来越有价值,涌现出了“海康威视”、“大华股份”、“深圳英飞拓”等一批明星企业,名扬海内外,动辄市值几百亿。同时在芯片级,国产华为海思HI35XX系列视频编解码方案也逐步取代进口芯片(如TI、安霸)成为主流方案。 视频行业技术含量高、难度大、学习周期长、发展变化快而资料少,因此行业比较缺人、工资较高。如海康威视,普通高校硕士研究生应届进入年薪普遍高于15-20万,在嵌入式linux领域也算高工资技术方向了。 本项目是朱老师及其团队推出的一个嵌入式linux领域重量级企业级实战项目,选用华为海思HI3518E方案,结合OV9712/AR0130 Sensor实现图像采集和H.264编码压缩,并通过ethernet和WIFI,以socket实时流和RTSP等方式,实现720P/960P高清视频传输。本项目共分11季,从海思SDK开发环境搭建,到sample程序讲解、SDK中API函数解析,到H.264编解码、RTSP流媒体传输、MP4文件打包,到图像IQ调试、图像识别等视频领域高阶内容,可以说从零基础入手,对图像采集、编解码、网络传输、图像存储和识别做了全方位的详细讲解和代码分析,是目前市面上**一套系统讲解图像和视频技术的视频课程。

    494 人正在学习 去看看 朱有鹏

本文介绍了如何使用matlab调用百度语音识别的API接口,实现语音识别。

  • 首先进入百度云的官网注册登录百度云官网
  • 登陆之后进入管理控制台,如下图所示
    在这里插入图片描述
  • 接着创建一个语音识别的应用,就选默认的就好了
    在这里插入图片描述

官方技术文档可以参考

  • 接着我们来看使用方法,整个流程和我们之前的人脸识别大致相同,在调用api之前我们需要获得acess_token,这个可以通过我们的api key和secret key获得,这个可以在应用管理里面看到,如下图:
    在这里插入图片描述
    在这里插入图片描述
  • 用代码总结起来就是
api_key = '你的 api key';
secret_key = '你的secret key';
url_token = ['https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=',api_key,'&client_secret=',secret_key];
token = webread(url_token);
token = token.access_token; % 至此,获得了token

效果如下,但是要注意token的有效期是1个月,就是这个token在一个月内是不会变的,这段时间不用重复请求,直接用就好在这里插入图片描述


  • 接下来处理音频,准备上传
    • 注意音频我这里以 .wav文件为例,官方支持pcm 或者 wav 或者 amr,但是采样率必须为16000,单声道。同时要将音频转换成字符串,进行一个编码,这里需要用到一个常用的,但是matlab自身没有的函数base64file,可以在matlab官方下载,我这里直接贴出来。
    • 这个函数真的非常有用,很多地方需要用到这种编码。
function [base64string,base64string_len] = base64file(file)
fid = fopen(file,'rb');
bytes = fread(fid);
fclose(fid);
base64string_len = size(bytes,1);
encoder = org.apache.commons.codec.binary.Base64;
base64string = char(encoder.encode(bytes))';
end
  • 我们再来看官方给出的请求参数
    在这里插入图片描述
    speech和len是音频编码之后得到的数据,rate和channel有指定值而且不可省略dev_pid这个是调用的接口函数,一般取默认值就好,按需求更改。
    在这里插入图片描述

  • 要点都说完了,下面看代码就很好理解了
[base64string,base64string_len] = base64file(path);
data = struct('format','wav','token',token,'len',base64string_len,...
    'speech',base64string,'cuid','Sirius','rate',16000,'channel',1);
result = webwrite(url,data);
result = result.result{:};

在这里插入图片描述


  • 最后以一个完整的例子为例,直接运行对着麦克风说话即可
a = audiorecorder(16000,16,1);
record(a);
pause(5);
stop(a);
a = getaudiodata(a);
audiowrite('test.wav',a,16000);
txt = Totext('test.wav');
delete('test.wav');

function result = Totext(path)
api_key = '你的';
secret_key = '你的';
url_token = ['https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=',api_key,'&client_secret=',secret_key];
token = webread(url_token);
token = token.access_token % 至此,获得了token
url = 'http://vop.baidu.com/server_api';
[base64string,base64string_len] = base64file(path);
data = struct('format','wav','token',token,'len',base64string_len,...
    'speech',base64string,'cuid','Sirius','rate',16000,'channel',1);
result = webwrite(url,data);
result = result.result{:};
end

function [base64string,base64string_len] = base64file(file)
fid = fopen(file,'rb');
bytes = fread(fid);
fclose(fid);
base64string_len = size(bytes,1);
encoder = org.apache.commons.codec.binary.Base64;
base64string = char(encoder.encode(bytes))';
end

下面是相关的文章,有兴趣可以看看,有关我如何提取曲线数据和其他API的使用
链接: 百度云人脸识别.
链接: 有道翻译
链接: 百度地图经纬度.
链接: 百度云文字识别
链接: MATLAB 发送邮件 sendmail的使用.
链接: MATLAB 曲线数据提取工具 GUI
嘿嘿,如果觉得有用,请点赞支持,谢谢

Python 实时语音识别

阅读数 1494

没有更多推荐了,返回首页