在linux下如何进行放音和录音

在linux下如何进行放音和录音,第1张

录音:mic接到codec,经过adc变成数字信号,经过待续2中ac97等接口存储到cpu的fifo中,经过待续1中的dma传输存储到内存,经过待续3中alsa_lib中snd_pcm_readi接口传给录音软件,经过编码,进而形成音频文件。

放音:播放软件将音频文件解码,并通过待续3中snd_pcm_writei接口逐渐传递到和dma相关的内存,经过待续2中dma传递给cpu的fifo,再经过ac97等接口传递给dac,最后传给连接在codec上的speaker。

心得:

1.ac97数据传输颇复杂,分时复用,cpu端fifo和codec端adc/dac关系要对应好。比如,cpu端的pcm left fifo占用slot3,那么adc只有配置成slot3才能把数据传递给它,如果配置成slot6,那就传给cpu的mic in fifo了。录音单声道通常选择slot6,录音双声道通常两个adc分别选择slot3和slot4。

2.wav音频文件大小计算:要测试录音是否丢祯,就必然要计算文件大小,通常的方法是:根据录音时间,用公式:录音时间(单位s)x采样率x(采样位数/8)x通道数。比如,录音时间5秒,采样率8kHz,位数16位,通道数1,那么5x8000x(16/8)x1=80k,实际的wav文件大小稍大于80k就对了。还有一种计算文件大小的方法:通常音频系统要用dma,也会用到dma中断,可以在dma中断中打印计数,次数xdma中断周期字节就行了。

3.数据交换的大小问题:待续1中DMA传输必须和FIFO的特性匹配:若FIFO位宽是16位,深度是16,并且半满时向DMA发出请求(握手),则链表式DMA必须配置成传输位宽16位,1次突发16字节,才能保证不丢失位数和数据个数。待续2中cpu端FIFO位数要和codec端adc/dac采样位数匹配,i2s/pcm接口可以配置成一样的值,比如16位,ac97接口复杂一点,cpu端不用配置,那么采样位数是多少呢?若cpu端fifo一个声道位宽16位,codec端adc/dac位宽18位,ac97通道20位,则传输到fifo端就被截取到有效的16位,整体采样位数16位,adc/dac的性能没有充分发挥而已。待续3中snd_pcm_readi、snd_pcm_writei函数第三个参数表示读写数据的大小,单位是祯,不是字节。双声道16位格式一祯大小为4字节

1、确认麦克风插孔是否连接正确,一般带麦克风的耳机都有两组接线插头,一组为绿色插头(即耳机音频信号),另一组为红色插头(即麦克风信号输入);首先确认红色插头应当连接到电脑面板对应的红色插孔中(通常情况下会有耳机和麦克风图标标识);2、先检查您的麦克风和主机的连接是否正确。解决方法:接到机箱后面的红色或粉红色接口上.3、看看您的麦克风是否被静音了.双击屏幕右下角小喇叭打开音频控制面板如果没有显示Microphone(麦克风)请点击左上方的选项--属性打开音量属性勾选麦克风后点确定.然后将音量控制里的Microphone(麦克风)下面静音前面的对号去掉即可。---设置内放后麦没声音的朋友也要照这个设置。4、看看您的麦克风是否能够正常地工作。解决方法:麦克风测试麦克风的方法:点击系统开始菜单---程序-----附件----娱乐-----录音机,打开录音机后,对着您的麦克讲话,同时点击红色的录音按钮,看能否录进去声音(声波的绿条有没有上下闪动),如果录进去了,说明您的麦克风是完好的,如果录不进去,可能您的声卡设置不正确或麦克风连接不对或是麦克风的开关没有打开.如果您的设置,麦克风,麦克风和主机的连接都没问题,很可能是您的声卡驱动有问题。解决方法:请把声卡驱动盘放入您的光驱动,按声卡说明书进行驱动。5、确认声卡驱动程序是否正常,点击开始菜单选择运行在运行中输入devmgmt.msc(不含引号),点击确定打开设备管理器在设备管理器的任意位置查看是否出现带有感叹号或问号的项目,再声音、视频和游戏控制器前面的+号,查看下方是否有带感叹号或问号的项目如果有,说明声卡驱动不正常或未安装百度搜索驱动精灵下载安装驱动精灵后,在基本状态中点击驱动升级升级完声卡驱动之后重新启动计算机,在尝试语音通话;6、鼠标右键点击任务栏右下角的音量图标选择打开音量控制点击左上角的选项选择属性d出属性对话框显示下列音量控制下方的所有项目前都打上勾,点击确定在音量控制窗口中查看是否有项目处于静音状态,去掉所有项目下方的静音前面的勾,再将所有项目的音量调整为最大,然后尝试与对方语言聊天;7、点击桌面左下角开始--控制面板--声音和音频设备--音频栏--录音选用Mic in at front panel(Pink),保证仅使用默认设备前面没有打勾,点击应用--语声栏--录音选用Mic in at front panel(Pink),点击确定。点击桌面右下角小喇叭--选项--属性--在混音器中选Mic in at front panel(Pink)--下面的所有选项勾选上,点击确定,并把所有的音量条拉到中间。如果你可以做完这一步,应该可以了。第⑥步:右击桌面我的电脑--属性--硬件--设置管理器--声音视频和游戏控制器--这个项下面如果有Realtek AC97 Audio(如果你没有你不用做第⑥步):点击桌面左下角开始--控制面板--声音和音频设备--音频栏--声音播放和录音选用Realtek AC97 Audio,保证仅使用默认设备前面没有打勾,点击应用--语声栏--声音播放和录音选用Realtek AC97 Audio点击确定。点击桌面右下角小喇叭--选项--属性--在混音器中选Realtek AC97 Audio,点击播放--下面的所有选项都要勾选上,点击确定,并把所有的音量条拉到中间。这时会自动退出,你会看到一条长长的窗口,还有很多还未显示,拉动下面的滚动条你就会看到,保证所有的静音都没有选上,并把所有的音量条拉到中间。选项--属性--在混音器中选Realtek AC97 Audio,点击录音--下面的所有选项都要勾选上,点击确定,并把所有的音量条拉到中间。试试吧8、、如果上述步骤都无法解决麦克风不能说话说话的问题,请点击开始菜单选择所有程序鼠标指向附件再指向娱乐选择录音机打开录音机窗口之后,点击圆形录音按钮,开始录音对着麦克风说话,看波形是否发生变化等到录音完毕,点击播放按钮,听听是否有声音,如果没有声音说明麦克风已经损坏的可能性很大。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8905100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存