OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 155|回复: 11

单片机录音播音,发不出说话的声音该怎么解决?

[复制链接]

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-8-10
在线时间
20 小时
发表于 2024-11-15 16:30:53 | 显示全部楼层 |阅读模式
10金钱
不经过单片机,直接用麦克发声经过一堆放大电路,能听到吹气呼气的声音,说话的几乎没有,看波形说话的时候起伏不是很大,然后经过adc转换存储,dac输出的话吹气的声音也不明显,硬件设计是固定的只能用这种方式来放音,现在一段一段的放音蜂鸣声特别明显

放音.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 6 天前 | 显示全部楼层
逐级排查啊,搞个正弦波\锯齿波\方波信号源让它放大,测波形.
专治疑难杂症
回复

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-8-10
在线时间
20 小时
 楼主| 发表于 6 天前 | 显示全部楼层
LcwSwust 发表于 2024-11-18 14:21
逐级排查啊,搞个正弦波\锯齿波\方波信号源让它放大,测波形.

现在示波器看着dac发出来的波形也像波折的那种,就是很奇怪形成不了正常声音,我发了个正弦波看着挺顺畅,你看音频输出时候的波形,还有杂波,这情况搞不清是硬件还是软件问题了
微信图片_20241118162744.jpg
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 6 天前 | 显示全部楼层
meihua 发表于 2024-11-18 16:29
现在示波器看着dac发出来的波形也像波折的那种,就是很奇怪形成不了正常声音,我发了个正弦波看着挺顺畅 ...

跳过单片机,将ADC脚飞线到DAC脚,看是否正常。
专治疑难杂症
回复

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-8-10
在线时间
20 小时
 楼主| 发表于 5 天前 | 显示全部楼层
LcwSwust 发表于 2024-11-18 16:41
跳过单片机,将ADC脚飞线到DAC脚,看是否正常。

我把音频输入那里直接跳到dac脚输出是正常的,今天又测了一天输出,能听出点音调来,但是整体听起来还是杂音多,没有准确的声音,这种一般是采样的问题还是输出的问题啊,我把采样从100k一直往小了试,然后把定时器驱动dac的速率也降低,音频波形才明显了
回复

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-8-10
在线时间
20 小时
 楼主| 发表于 4 天前 | 显示全部楼层
LcwSwust 发表于 2024-11-18 16:41
跳过单片机,将ADC脚飞线到DAC脚,看是否正常。

我把dac的定时器分频降得更低了,现在能听出说话的动静了,就是杂音超级多,我看一些资料说可能是电源干扰,有没有别的方法能让声音纯净一些
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 4 天前 | 显示全部楼层
meihua 发表于 2024-11-20 11:18
我把dac的定时器分频降得更低了,现在能听出说话的动静了,就是杂音超级多,我看一些资料说可能是电源干 ...

一般来说,要还原声音,采样率\DAC输出速度均是越高越好.
输出速度太低会产生噪声,或许得加滤波.

建议ADC接信号源,输入正弦\三角\锯齿\方波,
然后示波器监测ADC信号\DAC信号,看二者的差异.



专治疑难杂症
回复

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-8-10
在线时间
20 小时
 楼主| 发表于 3 天前 | 显示全部楼层
本帖最后由 meihua 于 2024-11-21 10:44 编辑
LcwSwust 发表于 2024-11-20 11:59
一般来说,要还原声音,采样率\DAC输出速度均是越高越好.
输出速度太低会产生噪声,或许得加滤波.

你看我输入正弦波,然后存储再dac输出的波形,这种横线是不是程序读取数据的时间啊,我是俩数组然后从芯片读取到缓存数组---输出---再读取存到另一个数组---再输出,一次性读2048个8位字节,合成1024个16位的,dac数组传1024个
1.jpg
2.jpg
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 3 天前 | 显示全部楼层
meihua 发表于 2024-11-21 10:41
你看我输入正弦波,然后存储再dac输出的波形,这种横线是不是程序读取数据的时间啊,我是俩数组然后从芯 ...

横线看样子是读取数据的时间,DAC输出速率约30kHz?
ADC采样率多少?
看样子问题很大.
建议,把ADC采样数据发往串口助手,看有没有问题.
DAC输出一段已知数据(如从0到4095),看有没有问题.
专治疑难杂症
回复

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2020-8-10
在线时间
20 小时
 楼主| 发表于 3 天前 | 显示全部楼层
LcwSwust 发表于 2024-11-21 11:06
横线看样子是读取数据的时间,DAC输出速率约30kHz?
ADC采样率多少?
看样子问题很大.

dac直接输出一段数据看起来是个正弦波,adc采样率16k左右,往大往小调感觉差不多
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 3 天前 | 显示全部楼层
meihua 发表于 2024-11-21 14:28
dac直接输出一段数据看起来是个正弦波,adc采样率16k左右,往大往小调感觉差不多

那就得看数据了,把上面正弦波的ADC采集数据发送到串口助手看看。

专治疑难杂症
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 10 小时前 | 显示全部楼层
首先你的ADC输入脚的波形,必须正常,也就是ADC输入脚,你可以先接到功放,看能否正常出声,否则adc再dac不用想,百分百不行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 10:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表