蓝牙LC3编解码


目前了解到蓝牙编解码LC3已经有了更新的版本是LC3plus。

  • 下载了工程代码,使用vscode进行编译和查看代码
    LC3代码下载


文章目录

  • 蓝牙LC3编解码
  • 1. Overview
  • 2. Building
  • 3. Project Compile
  • 4. Usage


1. Overview

LC3是一种基于块的转换音频编解码器,具有较低的算法延迟,提供较低的复杂性实现,并提供非常广泛的可用比特率。编码器和解码器在8 kHz、16 kHz、24 kHz、32 kHz和48 kHz的采样频率下都以10 ms和7.5 ms的帧间隔工作。当输入信号的采样频率为44.1 kHz时,使用与48 kHz相同的帧长度,结果在10 ms帧间隔中实际帧持续时间略长,为10.884 ms,在7.5 ms帧间隔中为8.16 ms。

为了解码接收到的负载,LC3解码器依赖于外部确定的坏帧指示(BFI)标志和每个通道的有效载荷大小参数。BFI标志用于向解码器发出丢失有效负载或在接收的有效负载中存在任何检测到的比特错误的信号。该规范还定义了有效负载中的内部字段,允许外部应用程序向解码器发送损坏的有效负载的信号。如果负载位被标记为损坏,LC3解码器将跳过读取负载位,取而代之的是激活一个PLC算法来产生未压缩的输出PCM信号。有效载荷大小参数使LC3解码器能够正确解析每个接收到的有效载荷。LC3有效负载不包含任何时间信息,如时间戳或序列号。

该规范使用方程和整数伪代码编写,以支持在许多不同的体系结构上高效地实现编解码器。示例包括具有有限24位累加器的功率受限助听器设备和具有高效浮点单元的设备

2. Building

Unix platforms:
    - Go to src/fixed_point or src/floating_point folder
    - Call "make"
    - Executable path and name "./LC3plus"

Windows platforms:
    - Go to src/fixed_point/msvc or src/floating_point/msvc folder
    - Open up solution file LC3plus.sln and build it
    - Standard config executable path and name 
    	".\Win32\Release\LC3plus.exe"
    - The solution is optimized for Visual Studio 2017

Samplingrate [Hz]

Bitrate [bps]

EP Mode [0 = off, 4 = highest protection]

8000

32000

0,4

16000

32000

0,4

24000

48000

0,4

32000

48000

0,4

44100

64000

0,4

48000

64000

0,4

3. Project Compile

下载好程序后,根据下图路径打开,vscode软件的下载大家自己搞定。

Python 蓝牙音频数据编码 打开蓝牙音频编码器_Python 蓝牙音频数据编码

然后就会打开如下图页面,然后在vscode的”生成“目录下点击“生成LC3plus”,就会编译成功。

Python 蓝牙音频数据编码 打开蓝牙音频编码器_音视频_02

之后就会生成LC3plus.exe应用程序

Python 蓝牙音频数据编码 打开蓝牙音频编码器_Python 蓝牙音频数据编码_03

4. Usage

The following example commands explain the usage of the LC3plus binary. A complete list is available by calling ./LCplus -h.To call encoder+decoder at the same time    
	
	./LC3plus INPUT.wav OUTPUT.wav BITRATE

cmd命令产生:

=> LC3plus.exe ..\..\..\..\..\testvec\input\thetest16.wav out1.wav 32000

Python 蓝牙音频数据编码 打开蓝牙音频编码器_物联网_04

通过上述操作后,就可以产生一个经过LC3编解码后的音频out1.wav

我们可以听一下原音和编解码后的声音: