首页
开源
资讯
活动
开源许可证
软件工程云服务
软件代码质量检测云服务
持续集成与部署云服务
社区个性化内容推荐服务
贡献审阅人推荐服务
群体化学习服务
重睛鸟代码扫描工具
登录
注册
代码拉取完成,页面将自动刷新
Watch
26
Star
75
Fork
32
珠海杰理科技
/
fw-AD15N
Fork 仓库
加载中
取消
确认
代码
Issues
206
Pull Requests
0
Wiki
2
统计
更新失败,请稍后重试!
Issues
/
详情
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
FAQ:魔音学舌功能开发介绍-录音变音
待办的
#IB0VET
Lj-job
成员
创建于
2024-10-30 16:52
### 简介-产品形态 实时监控MIC信号,在检测到有人说话时,录音说话内容,并在之后使用变速变调算法进行解码播放。 [视频资源 : 原厂研发组本站视频链接](https://www.bilibili.com/video/BV1fuSvYtEk6/?spm_id_from=333.999.list.card_archive.click&vd_source=254273a14d3e073e6006d61b2acafb16) **开发思路: _修改录音模式实现此功能;提前启动编码,并实时检测MIC ADC的能量,在检测到能量后才把编码数据放给后级,以此实现学舌魔音功能不丢音。_** ### 一、魔音学舌涉及到: 1、变音解码 2、录音编码 ### 二、魔音学舌需要的修改点 1、解码时启动变音 2、MIC ADC采集到的PCM做能量运算 3、启动编码时,在劫持enc_output函数缓存第一包头数据 4、劫持enc_output,在已经检测导能量的情况下把第一包头数据放给后级,之后再将编码数据放给后级。 ### 三、变音解码 a)在decoder_io启动时,同时打开变速变调 ### 四、编码基本流程 ![输入图片说明](https://foruda.gitee.com/images/1730277857016789323/2a85adec_9185836.png "屏幕截图") ### 五、在编码基础上修改出魔音需要的功能 ![输入图片说明](https://foruda.gitee.com/images/1730277861704852165/a4f7a83f_9185836.png "屏幕截图") ### 六、劫持enc_output函数(ump3为例) ``` extern u32 enc_output(void *priv, u8 *buf, u16 len); void my_enc_output(void *priv, u8 *buf, u16 len) { if(第一次输出) { 缓存下头数据buf到h_buf,长度位len; return len; } else if(已经检测到过能量) { if(是否写如果头数据到h_buf) { tlen = enc_output(priv, h_buf, len(h_buf)); if(h_buf! = tlen) { return 0; } } return enc_output(priv, buf, len(h_buf));//存下当前的音频数据 } return len; } ``` ``` static const EN_FILE_IO mp3_enc_io = { &enc_mp3_hdl, //input跟output函数的第一个参数,解码器不做处理,直接回传,可以为NULL enc_input, my_enc_output, }; ```
### 简介-产品形态 实时监控MIC信号,在检测到有人说话时,录音说话内容,并在之后使用变速变调算法进行解码播放。 [视频资源 : 原厂研发组本站视频链接](https://www.bilibili.com/video/BV1fuSvYtEk6/?spm_id_from=333.999.list.card_archive.click&vd_source=254273a14d3e073e6006d61b2acafb16) **开发思路: _修改录音模式实现此功能;提前启动编码,并实时检测MIC ADC的能量,在检测到能量后才把编码数据放给后级,以此实现学舌魔音功能不丢音。_** ### 一、魔音学舌涉及到: 1、变音解码 2、录音编码 ### 二、魔音学舌需要的修改点 1、解码时启动变音 2、MIC ADC采集到的PCM做能量运算 3、启动编码时,在劫持enc_output函数缓存第一包头数据 4、劫持enc_output,在已经检测导能量的情况下把第一包头数据放给后级,之后再将编码数据放给后级。 ### 三、变音解码 a)在decoder_io启动时,同时打开变速变调 ### 四、编码基本流程 ![输入图片说明](https://foruda.gitee.com/images/1730277857016789323/2a85adec_9185836.png "屏幕截图") ### 五、在编码基础上修改出魔音需要的功能 ![输入图片说明](https://foruda.gitee.com/images/1730277861704852165/a4f7a83f_9185836.png "屏幕截图") ### 六、劫持enc_output函数(ump3为例) ``` extern u32 enc_output(void *priv, u8 *buf, u16 len); void my_enc_output(void *priv, u8 *buf, u16 len) { if(第一次输出) { 缓存下头数据buf到h_buf,长度位len; return len; } else if(已经检测到过能量) { if(是否写如果头数据到h_buf) { tlen = enc_output(priv, h_buf, len(h_buf)); if(h_buf! = tlen) { return 0; } } return enc_output(priv, buf, len(h_buf));//存下当前的音频数据 } return len; } ``` ``` static const EN_FILE_IO mp3_enc_io = { &enc_mp3_hdl, //input跟output函数的第一个参数,解码器不做处理,直接回传,可以为NULL enc_input, my_enc_output, }; ```
评论 (
0
)
Lj-job
创建了
任务
Lj-job
添加了
录音
标签
Lj-job
添加了
源厂FAQ
标签
Lj-job
添加了
音效
标签
Lj-job
添加了
解码
标签
Lj-job
添加了
audio-adc
标签
Lj-job
修改了
描述
原值
### 简介-产品形态
实时监控MIC信号,在检测到有人说话时,录音说话内容,并在之后使用变速变调算法进行解码播放。
[
原厂研发组本站视频链接](https://www.bilibili.com/v
i
de
o
/BV1fuSvYtEk6/?spm_id_from=333.999.list.card_ar
c
hive.click&vd_source=254273a14d3e073e6006d61b2acafb16)
**开发思路: _修改录音模式实现此功能;提前启动编码,并实时检测MIC ADC的能量,在检测到能量后才把编码数据放给后级,以此实现学舌魔音功能不丢音。_**
### 一、魔音学舌涉及到:
1、变音解码
2、录音编码
### 二、魔音学舌需要的修改点
1、解码时启动变音
2、MIC ADC采集到的PCM做能量运算
3、启动编码时,在劫持enc_output函数缓存第一包头数据
4、劫持enc_output,在已经检测导能量的情况下把第一包头数据放给后级,之后再将编码数据放给后级。
### 三、变音解码
a)在decoder_io启动时,同时打开变速变调
### 四、编码基本流程
![输入图片说明](https://foruda.gitee.com/images/1730277857016789323/2a85adec_9185836.png "屏幕截图")
### 五、在编码基础上修改出魔音需要的功能
![输入图片说明](https://foruda.gitee.com/images/1730277861704852165/a4f7a83f_9185836.png "屏幕截图")
### 六、劫持enc_output函数(ump3为例)
```
extern u32 enc_output(void *priv, u8 *buf, u16 len);
void my_enc_output(void *priv, u8 *buf, u16 len)
{
if(第一次输出)
{
缓存下头数据buf到h_buf,长度位len;
return len;
}
else if(已经检测到过能量)
{
if(是否写如果头数据到h_buf)
{
tlen = enc_output(priv, h_buf, len(h_buf));
if(h_buf! = tlen)
{
return 0;
}
}
return enc_output(priv, buf, len(h_buf));//存下当前的音频数据
}
return len;
}
```
```
static const EN_FILE_IO mp3_enc_io = {
&enc_mp3_hdl, //input跟output函数的第一个参数,解码器不做处理,直接回传,可以为NULL
enc_input,
my_enc_output,
};
```
新值
### 简介-产品形态
实时监控MIC信号,在检测到有人说话时,录音说话内容,并在之后使用变速变调算法进行解码播放。
[
视频资源 : 原厂研发组本站视频链接](https://www.bilibil
i
.c
o
m/video/BV1fuSvYtEk6/?spm_id_from=333.999.list.
c
ard_archive.click&vd_source=254273a14d3e073e6006d61b2acafb16)
**开发思路: _修改录音模式实现此功能;提前启动编码,并实时检测MIC ADC的能量,在检测到能量后才把编码数据放给后级,以此实现学舌魔音功能不丢音。_**
### 一、魔音学舌涉及到:
1、变音解码
2、录音编码
### 二、魔音学舌需要的修改点
1、解码时启动变音
2、MIC ADC采集到的PCM做能量运算
3、启动编码时,在劫持enc_output函数缓存第一包头数据
4、劫持enc_output,在已经检测导能量的情况下把第一包头数据放给后级,之后再将编码数据放给后级。
### 三、变音解码
a)在decoder_io启动时,同时打开变速变调
### 四、编码基本流程
![输入图片说明](https://foruda.gitee.com/images/1730277857016789323/2a85adec_9185836.png "屏幕截图")
### 五、在编码基础上修改出魔音需要的功能
![输入图片说明](https://foruda.gitee.com/images/1730277861704852165/a4f7a83f_9185836.png "屏幕截图")
### 六、劫持enc_output函数(ump3为例)
```
extern u32 enc_output(void *priv, u8 *buf, u16 len);
void my_enc_output(void *priv, u8 *buf, u16 len)
{
if(第一次输出)
{
缓存下头数据buf到h_buf,长度位len;
return len;
}
else if(已经检测到过能量)
{
if(是否写如果头数据到h_buf)
{
tlen = enc_output(priv, h_buf, len(h_buf));
if(h_buf! = tlen)
{
return 0;
}
}
return enc_output(priv, buf, len(h_buf));//存下当前的音频数据
}
return len;
}
```
```
static const EN_FILE_IO mp3_enc_io = {
&enc_mp3_hdl, //input跟output函数的第一个参数,解码器不做处理,直接回传,可以为NULL
enc_input,
my_enc_output,
};
```
展开全部操作日志
折叠全部操作日志
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
录音
源厂FAQ
音效
解码
audio-adc
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (1)
标签 (10)
main
AD1x-4578_AC104-release_v1.8.0
AD1x-457_AC104-release_v1.7.0
ad14n_ad15n_ac104n-release_v1.6.0
ad14n-ad15n-release_V1.5.1
ad14n-ad15n-release_V1.5.0
ad14n-ad15n-release_V1.4.0
ad14n-ad15n-release_V1.3.0
ad14n-ad15n-release_V1.2.2
ad14n-ad15n-release_V1.1.0
ad150-release_V1.0.2
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)