数字信号处理操作教程_音频解码:3-8 G711A音频解码实验

news/2024/11/13 15:02:42/

一、实验目的

学习G711音频的格式和G711A音频解码的原理,并实现将BIT格式解码为PCM格式。

二、实验原理

G711

G711是国际电信联盟订定出来的一套语音压缩标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号。起压缩率为1:2,即把16位数据压缩成8位。G711是主流的波形声音编解码器。

PCM是对模拟的连续信号进行抽样,G711则是对PCM数据进行再一次的抽样。G711主要是对16bit的PCM进行抽样,取到PCM的高位数据,去掉低位的数据,并且只保留8位。这样压缩的比率就达到了2:1,是有损压缩。

G711 标准下主要有两种压缩算法。一种是µ-law algorithm (又称often u-law, ulaw, mu-law),主要运用于北美和日本;另一种是A-law algorithm,主要运用于欧洲和世界其他地区。其中,后者是特别设计用来方便计算机处理的。这两种算法都使用一个采样率为8kHz的输入来创建64Kbps的数字输出。G711采用一种称为分组丢失隐藏(PLC)的技术来减少丢包带来的实际影响。有效的信号带宽在静默期间通过语音活动检测(VAD)这一过程被减小。

G711编码的声音清晰度好,语音自然度高,但压缩效率低,数据量大常在32Kbps以上。常用于电话语音(推荐使用64Kbps)。

G711A

a-law也叫G711A,输入的是13位(其实是S16的高13位),使用在欧洲和其他地区,这种格式是经过特别设计的,便于数字设备进行快速运算。

G711A的解码过程如下:

拿到8位的g711a编码数据后;

与0x55亦或,还原偶数位,并取强度位;

取得样本位;

根据强度位+还原样本,放大还原;

通过符号位的值取反得到pcm数据的正负。

程序流程设计

程序流程设计中首先要打开/创建输入和输出的文件,接着进行G711解码并将解码后的数据保存到pcm文件,最后关闭文件即可。

image.png

三、操作现象

实验设备

本实验所需硬件为实验板,仿真器和电源。

image.png

硬件连接

(1)连接仿真器和电脑的USB接口。

(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件部分操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

点击运行程序

运行程序后,console窗口打印提升信息。

解码过程大约需要5分钟。解码结束后,会打印出提示信息。

此时可看到debug目录下由speech.bit文件解码生成的speech.pcm文件。

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

最后可通过专门的工具播放PCM 文件和 BIT 格式文件,

打开软件,点击“文件->导入->原始数据”。

先导入工程目录下的 speech.bit 文件,点击绿色剪头播放音频数据。

再导入工程目录下的 speech.pcm 文件,点击绿色剪头播放音频数据。

对比后可发现 PCM 文件与 BIT 文件播放内容一致

image.png


http://www.ppmy.cn/news/1440074.html

相关文章

11 c++版本的贪吃蛇

前言 呵呵 这大概是 大学里面的 c 贪吃蛇了吧 有一些 面向对象的理解, 但是不多 最近 因为想要 在单片机上面移植一下 贪吃蛇, 所以 重新拿出了一下 这份代码 然后 将它更新为 c 版本, 还是 用了一些时间 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用…

Vue进阶(幺柒叁):表单元素日期校验_vue中datetime校验

**js部分**import Validator from ‘/utils/validate.js’ data() { return { // 开始时间 pickerOptions1: { shortcuts: [ { text: ‘今天’, onClick (picker) { picker.KaTeX parse error: Expected EOF, got } at position 40: … }̲ },…emit(‘pick’, date) } }, { te…

WSL2无法ping通本地主机ip的解决办法

刚装完WSL2的Ubuntu子系统时,可能无法ping通本地主机的ip: WSL2系统ip: 本地主机ip: 在powershell里输入如下的命令: New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias &quo…

深入了解 npm

深入了解 npm:Node.js 的强大包管理工具 Node.js 的开发者们都知道,有效的包管理是任何项目成功的关键之一。这里,我们将深入探讨 npm(Node Package Manager),这是 Node.js 最受欢迎的包管理器&#xff0c…

Restful API 具体设计规范(概述)

协议 https 域名 https://www.baidu.com/api 版本 https://www.baidu.com/v1 路径 https://www.baidu.com/v1/blogs 方法 数据过滤 状态码返回结果 返回的数据格式 尽量使用 JSON,避免使用 XML。 总结: 看 url 就知道要什么看 http method 就知道干…

【Websokect】服务器https协议下ws连接失败问题及解决办法

在服务器使用HTTPS协议下连接WebSocket时,通常会出现一些常见的问题导致连接失败。以下是一些可能的原因和解决办法: SSL证书配置问题: 确保您的服务器上已正确配置SSL证书,并且证书有效。如果证书配置不正确或者过期,…

springboot+thymeleaf实现一个简单的监听在线人数功能

功能步骤: 1. 当用户访问登录页面时,Logincontroller的showLoginForm方法被调用,返回登录页面的视图名字。 2. 用户提交表单,调用LoginController的login方法。 3.login方法 4.登录验证通过,home方法会被调用&#xf…

# IDEA2019 如何打开 Run Dashboard 运行仪表面板

IDEA2019 如何打开 Run Dashboard 运行仪表面板 段子手168 1、依次点击 IDEA 上面工具栏 —> 【View】 视图。 —> 【Tool Windows】 工具。 —> 【Run Dashboard】 运行仪表面板。 2、如果 【Tool Windows 】工具包 没有 【Run Dashboard】 运行仪表面板 项 依次…