Recorder
– 音频录制引擎¶
Recorder模块实现HaaS平台的音频录制功能,具体接口和参数如下所示。
调用Recorder接口之前,你需要先完成声卡及Audio引擎的初始化工作,具体接口请参考 Snd
模块
使用示例¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # coding=utf-8
from audio import Snd, Recorder
# 声卡codec驱动注册及audio引擎初始化
Snd.install_codec_driver()
Snd.init()
# 实例化音频录制引擎并创建录音句柄
r0 = Recorder()
r0.create()
# 设置音频录制格式:PCM格式,单通道,16K采样率, 640字节帧长度, 16bit数据位宽
format = 1
read_samples = 640
channels = 2
rate = 16000
bits = 16
r0.set_sink(format, rate, channels, bits, read_samples, 0, None)
#初始化录取音频数据缓存空间
read_size = int(read_samples * channels * bits / 8)
readBuf = bytearray(read_size)
#引入sdcard模块,将录音数据保存成rec.pcm格式存储到sdcard
import uos
fd = uos.open('/sdcard/rec.pcm', 'w')
index = 0
#启动录音并循环100次(具体循环次数由应用决定)
while index < 100:
rsize = r0.get_stream(readBuf, read_size)
ws = uos.write(readBuf, 1, rsize, fd)
index += 1
#关闭文件句柄
uos.close(fd)
#停止录音并释放录音引擎资源
r0.release()
#释放声卡及audio引擎资源
Snd.uninstall_codec_driver()
Snd.deinit()
|
函数接口¶
Recorder模块具体接口和参数。
-
Recorder.
set_sink
(format, rate, channels, bits, frames, bitrate, sink)[源代码]¶ 请求录音资源并设置录音参数。
- 参数
format(int) –
录音数据编码格式, 可以选择的类型为:
-
enum
media_format_t
MEDIA_FMT_UNKNOWN = 0,
MEDIA_FMT_PCM,
MEDIA_FMT_WAV,
MEDIA_FMT_MP3,
MEDIA_FMT_AAC,
MEDIA_FMT_M4A,
MEDIA_FMT_OGG,
MEDIA_FMT_OPS,
MEDIA_FMT_SPX,
MEDIA_FMT_WMA,
MEDIA_FMT_AMR,
MEDIA_FMT_AMRWB,
MEDIA_FMT_FLAC,
-
enum
rate(int) – 采样率,支持采样率包括但不限于:8K, 16K,24K
channels(int) – 声道数,取值为1或者2
bits(int) – 数据宽度,取值为16,24,32, 通常取值为16
frame_samples(int) – 帧长度, 每次录音期待读取的数据
sink(str) – 保存路径,对于录音到缓存中的场景,sink设置 None 即可。
- 返回
0: 成功,其他: 失败
- 引发
OSError – EINVAL
-
Recorder.
get_stream
(buffer, nbytes)[源代码]¶ 读取指定长度的录音数据并保存到buffer中。
- 参数
buffer(bytearray) – 音频存放的位置
nbytes(int) – 期待读取的音频字节数
- 返回
实际读取到的音频数据字节数,不大于nbytes;负数代表读取失败。
- 引发
OSError – EINVAL
-
Recorder.
get_state
()[源代码]¶ 获取录音引擎状态。
- 参数
空 –
- 返回
录音音频状态,可以选择的类型为:
-
enum
recorder_state_t
¶ RECORDER_STAT_IDLE = 0,
RECORDER_STAT_READY,
RECORDER_STAT_RUNNING,
RECORDER_STAT_STOP,
RECORDER_STAT_ERROR,
-
enum
- 引发
OSError – EINVAL
-
Recorder.
ns_enable
(enable)[源代码]¶ 是否使能音频降噪NS(Noise Suppression)功能。
- 参数
enable(int) – 1为允许使能,0为禁止使能
- 返回
0: 成功,其他: 失败
- 引发
OSError – EINVAL
-
Recorder.
ec_enable
(enable)[源代码]¶ 是否使能回声消除EC(Echo Cancle)功能。
- 参数
enable(int) – 1为允许使能,0为禁止使能
- 返回
0: 成功,其他: 失败
- 引发
OSError – EINVAL
-
Recorder.
agc_enable
(enable)[源代码]¶ 是否使能自动增益控制AGC(Auto Gain Control)功能。
- 参数
enable(int) – 1为允许使能,0为禁止使能
- 返回
0: 成功,其他: 失败
- 引发
OSError – EINVAL