版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (作者:张华 发表于:2018-01-09)

问题

发现一个问题,在笔记本上使用了pyaudio包的应用在关闭扬声器仅使用耳机的情况下无法将声音送出去。(注:笔记本只有一个口)
而使用台式机没这个问题,即使关闭音箱只使用耳机,一样工作正常。(注:台式机是一个声卡,录音与扬声器分别出前面板和后面板,当音响接后面,耳机使用二合一线接前面板,可做到关闭音箱仍然可以从耳机抓取声音。)
这也是京东上所有3.5mm的手机麦克风(如山业 MM-MC24)在接单孔的手机或电脑时在录音时就无法同时接功放的原因(手机麦克风接手机的单孔3.5mm口了, 手机上的扬声器就关闭了, 但一般的手机麦克风并没有集成的喇叭,所以就不能放声了)(注:加一根音频一分二线可以将单孔口变成双口,未测试)
20200416更新,windows也在同样问题,python程序使用pyaudio包通过扬音器放音的同时,录音设备无法同时监听这个扬音器放出的声音.经测试,可以安装一个叫Virtual Audio Cable的虚拟声卡,然后将声音的输入输出均改为这个虚拟声卡,这样可以模拟stereo mix实现内部录音,但输入指向虚拟声卡了会造成无法用麦克风啊.这时就还需要用它的audio repeater功能将声音再拷一份给实际物理设备.
还发现了一款类似的叫voicemeeter的软件,具体使用方法见附件。mac系统下用叫soundflower的软件。

解决

在ubuntu上安装pulseaudio的前端控制工具pavucontrol (apt install pavucontrol), 然后执行pavucontrol命令后只须在Recording TAB处将改成’Monitor of Built-in Audio Analog Stereo’后在关闭音箱的情况下pyaudio可以直接监听耳机将声音再回传至耳机, 但是此时耳机的录音功能会失效.(Playback处维持不变仍为’Build-int Audio Analog Stereo’),


注: android上因无pulseaudio故无法做这件事,google上搜索“android simultaneous output”到下列网页解释的很清楚 - https://stackoverflow.com/questions/14064693/audio-output-on-headset-speakerphone-simultaneously

附录一,将喇叭的声音同时从多个声卡输出

sudo apt-get install paprefs, 然后在paprefs应用中设置simultaneous output,重启(pulseaudio -k), 这时Sound设置中会出出一个虚拟声卡.

附录二,Chrome中设置声音的路径

chrome://settings/content#media-stream-mic

20180205更新

今天发现我的hexchat不能声音提示了,原来是在我安装pavucontrol之后这个工具和’System settings -> sound’里设置alert volume的声音是独立的,在pavucontrol将’Playback -> system sounds’设置之后能听到声音提示了。

20180901更新 - 将笔记本声音输出到手机

笔记本只有一个音频输出, 所以需要买一个USB声卡, 这样就有了麦克风输入口和音频输出口. 将这个输出口用一根公对公音频线连接, 另一端接音频一分二线的麦克风输入口, 音频一分二线的公口插手机.
注: 经实际测试, 上面步骤省略USB声卡也是可以的, 公对公音频线一端连电脑一端接音频一分二线的麦克风输入口, 音频一分二线公口接手机。

20191026更新 - stream ubuntu audio output to android over wifi

hua@t440p:~$ pactl list | grep tcpName: module-native-protocol-tcpName: module-simple-protocol-tcp
hua@t440p:~$ pactl list sources short |grep analog-stereo.monitor
1   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   IDLEcat << EOF | sudo tee -a /etc/pulse/default.pa
#load-module module-simple-protocol-tcp source=1 record=true port=12344
load-module module-simple-protocol-tcp source=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor rate=48000 format=s16le record=true port=12344
EOF
pulseaudio -k
pulseaudio --start --log-target=syslog
install app 'SIMPLE PROTOCOL PLAYER' in the cellphone

android底层使用tinyalsa, 并无pavucontrol可以将声音输出改为耳机带麦模式.

root@virgo:/ # cat /proc/asound/cards                                          0 [msm8974taikomtp]: msm8974-taiko-m - msm8974-taiko-mtp-snd-cardmsm8974-taiko-mtp-snd-cardls
root@virgo:/ # ls /system/lib/libtinyalsa.so
/system/lib/libtinyalsa.sohttps://wenku.baidu.com/view/9160ea8e14791711cd79170f.html
https://www.wildmountainechoes.com/equipment/audio-recording-with-a-smartphone/

anbox安装

sudo add-apt-repository ppa:morphis/anbox-support
sudo apt update
sudo apt install linux-headers-generic anbox-modules-dkms
sudo modprobe ashmem_linux
sudo modprobe binder_linux
ls -1 /dev/{ashmem,binder}
sudo snap install --devmode --beta anbox
#sudo apt install android-tools-adb
adb devices
adb install xxx.apk

耳机电流声解决

sudo alsamixer
按F6选择第二个(HDA INTEL PCH),然后把auto mute改为disable
sudo alsactl store
when “automute” is set to
“on”, your speakers will be automatically muted when you plug in your
headphones, and when you unplug your headphones, your speakers will be
automatically unmuted.

解决PulseAudio的爆音问题提声音质

Ubuntu下的音量调节范围比Windows要大得多,这并非是什么好事——音量条左端10%和右端20%几乎是废的,前者声音小得根本听不见,而后者则大得出现了爆音。有意义的音量条长度变短直接导致了音量调节非常困难,而且,就算是中间音量也经常出现爆音。做下列设置避免让pulseaudio来“智能”地根据主音量来调整PCM音量.
modify the file /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common
change 'volume=‘merge’ to 'volume=‘ignore’

安装最新的ALSA驱动

安装最新的ALSA驱动, 仅适用于HDA Intel声卡,如果是2005年之后的计算机一般都有一个HDA Intel声卡,it is for handling internal speakers, headphone jacks and microphones. USB or Bluetooth sound will not be affected.

#https://wiki.ubuntu.com/Audio/UpgradingAlsa/DKMS
#http://yangwenbo.com/articles/solve-ubuntu-intel-soundcard-problem-with-latest-alsa-driver.html
sudo add-apt-repository ppa:ubuntu-audio-dev/alsa-daily
sudo apt update
sudo apt install dkms oem-audio-hda-daily-dkms
hua@t440p:~$ alsactl -v
alsactl version 1.1.3

ALSA学习

https://wiki.archlinux.org/index.php/Advanced_Linux_Sound_Architecture
ALSA(高级linux声音体系)是为声卡提供驱动的linux内核组件,以替代原先的OSS(开放声音系统),而PulseAudio则是声音服务器。软件要发声先传给Pulse处理(主要是多条音频流的混音)然后发给ALSA驱动发出声音。PulseAudio的出现解决了混音和声卡独占的问题, 但它并不是必须的, 可以跳过它直接控制ALSA的,只是没有了声音控制及混音功能(anroid上就是只有minialsa而没有PulseAudio导制声音无法输出到多声道,如同时输出到耳机和喇叭,插上耳机后此时如果耳机本身不带喇叭是在录音时无法同时输出的)。
其实ALSA也是自带了一个简单的混音器dmix的, 但因声卡独占它会经常出现问题。什么叫混音呢?简单来说, 就是多个软件同时发出声音, 但声卡的音频流只有一个, 解决办法就是将所有声音“混合”起来。如果没有混音器, 那么就会出现声卡独占的问题,这就是PulseAuddio的存在价值了, 同时, 有了PulseAudio你可以分别控制各个软件的音量。

查看音频设备
hua@t440p:~$ cat /proc/asound/cards 0 [HDMI           ]: HDA-Intel - HDA Intel HDMIHDA Intel HDMI at 0xf1630000 irq 321 [PCH            ]: HDA-Intel - HDA Intel PCHHDA Intel PCH at 0xf1634000 irq 312 [U0x46d0x81b    ]: USB-Audio - USB Device 0x46d:0x81bUSB Device 0x46d:0x81b at usb-0000:00:14.0-3, high speed查看音频输入
hua@t440p:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: PCH [HDA Intel PCH], device 0: ALC3232 Analog [ALC3232 Analog]Subdevices: 1/1Subdevice #0: subdevice #0
card 2: U0x46d0x81b [USB Device 0x46d:0x81b], device 0: USB Audio [USB Audio]Subdevices: 1/1Subdevice #0: subdevice #0查看音频输出
hua@t440p:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]Subdevices: 1/1Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]Subdevices: 1/1Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]Subdevices: 1/1Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 9: HDMI 3 [HDMI 3]Subdevices: 1/1Subdevice #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 10: HDMI 4 [HDMI 4]Subdevices: 1/1Subdevice #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC3232 Analog [ALC3232 Analog]Subdevices: 1/1Subdevice #0: subdevice #0查看音频输出
使用speaker-test测试默认音频输出, 默认输出设备通过apply -L查看
hua@t440p:~$ aplay -L |grep -i '^default' -A 1
defaultPlayback/recording through the PulseAudio sound server
使用‘aplay test.wav -D plughw:CARD=PCH,DEV=0’来指定测试音频来测试,输出设备通过apply -L查看检测音频输入
使用arecord录制音频输入:
-f 表示音频格式。cd (16 bit little endian, 44100, stereo)
-d 录制几秒
-c 几个通道,如录制4个麦的麦克风阵列:-c 4
-D 使用ALSA的哪个设备:-D hw:1,0表示使用card 0下的device 0设备
arecord -f cd -d 5 -c 4 -D hw:1,0 > a.pcm #
aply a.pcmPulseAudio GUI工具pavucontrol
pavucontrol是PulseAudio的GUI工具(PulseAudio Volume controler)用于配置与控制音频设备

ubuntu取消屏幕跟读器

super+alt+s

voicemeeter使用

首先安装voicemeeter普通版,香蕉版也试了没有声音,后来换成普通版就好了。下载地址:https://www.vb-audio.com/Voicemeeter/index.htm
安装后重启机器,然后做两个设置:

  • 在控制面板 -> 声音中将输入输出全改成voicemeeter虚拟设备
  • 然后做如图所示设置:

    这样设置后:
  • 控制面板中默认输入输出都使用虚拟设备,这样像python这样应用也会默认输出到虚拟设备, 从而实现了内录
  • 同时voicemeeter中也设置了将虚拟设备输出到物理设备从而喇叭放音,将麦克风输入到虚拟设备从而实现了也可以从麦克风录音,但是需要平时将voicemeeter一直开着,否则无法实现音箱放音. 所以点它的设置,设置它开机自启,同时显示在拖盘中

20220522更新

将ubuntu 20.04升级到22.04之后发现声音挺小的.键入alsamixer命令,按F6选择'HDA Intel PCH'这一项,然后将所有项的声音调大到100%即可.
其他声音命令:

# https://developer.aliyun.com/article/837036
sudo usermod -a -G audio $USER
ls /proc/asound
cat /proc/asound/cards
arecord -l
aplay -l

Reference

[1] https://www.jianshu.com/p/c2bb45d4dad9

将声音也输出到耳机(by quqi99)相关推荐

  1. dell笔记本插上耳机没有声音_跑男的耳机没有声音,沙溢只用一句话诈出来,不愧是《王牌》常客...

    按理说在<王牌对王牌>结束后,<奔跑吧兄弟>就要上线了,但是因为特殊情况期间,所以跑男也就延期了!最近<跑男>的先导片已经播出了,在节目里我们看到了熟悉的戴耳机环节 ...

  2. mac 苹果电脑升级系统后蓝牙耳机只有一边有声音 苹果电脑连接耳机音质不好 苹果电脑浏览网页音视频嘈杂

    本教程可以解决: mac 苹果电脑升级系统后蓝牙耳机只有一边有声音 苹果电脑连接耳机音质不好 苹果电脑浏览网页音视频嘈杂 环境: 电脑系统: 耳机: 手工定制蓝牙平头耳机 蓝牙模块:高通5141 情况 ...

  3. 耳机重装系统后服务器坏了,Win7重装后耳机没声音|重装系统后耳机没声音怎么办?...

    电脑遇到不能解决的系统故障时候,很多用户会选择重装系统,但是有些用户重装完系统后,又出现了跟原来一样的故障,最近有使用win7系统的用户就遇到重装系统后,耳机没声音的问题.所以这一次PE吧给大家带来了 ...

  4. 微信小程序播放语音|audio播放mp3|audio播放音频在IOS|苹果手机上外放没声音,戴上耳机就有声音【解决办法记录】

    以前项目中遇到的问题,今天同事问到了,在这里记录一下 语音播放使用的 wx.createInnerAudioContext() 诡异问题记录: 在安卓上都没问题,语音发送接收之后播放都没问题,就是在 ...

  5. Xcode 真机调试: AVAudioPlayer 模拟器有声音,真机耳机有声音,扬音器没有声音的解决办法

    Xcode 真机调试:  AVAudioPlayer 模拟器有声音,真机耳机有声音,扬音器没有声音解决办法 1.在创建:AVAudioPlayer前,加入以下代码 AVAudioSession *au ...

  6. 电脑耳机没有声音,前面板耳机孔没声音

    很多时候我们都会遇到电脑耳机孔没有声音的时候,这次就总结一下常见的几种解决办法. 1.电脑右下角,打开声音设置,找到声音设备管理: 一般灰色的是之前用过,但是现在没插着线的.彩色的是现在可以用的,一般 ...

  7. cubase外放有声音耳机没声音_为何CUBASE耳机内没有声音

    这个问题可以用这种方法: 有朋友在用ASIO4ALL时,发现没有声音,它的输出显示not connected,我找了好久才知道原因,是因为GS Wavetable Synth和ASIO driver使 ...

  8. 小米air2se耳机只有一边有声音怎么办_小米耳机只有一边有声音,这问题怎么解决...

    一位粉丝的小米耳机出现只有一边有声音,这个问题其实基本可以判断出是插头尾部内的导线断裂造成,如果让他提供插头的照片看看是否有明显的外观破损,不出所料如下图. 维修处理这种情况的耳机,按道理其实很简单, ...

  9. Arduino基础学习-声音信号输出

    通过Arduino生成声音或者模拟电压,这个教学将介绍如何下面将教你如何建立一个基本的数字模拟转换器,然后你就可以是通过Arduino一些数字信号管脚的不同波形和波长的信号转换为模拟信号.(这篇文章我 ...

  10. vivo怎么调时间_还原专业声音,vivo影音耳机让你化身quot;K歌达人quot;

    作为最早涉足HiFi品牌的vivo对耳机的制作工艺绝不含糊其辞,毕竟对于一台手机最重要的配件莫过于耳机了.vivo今年发售的影音耳机(型号HP2035)赢得了消费者与媒体的一致好评.vivoHP203 ...

最新文章

  1. linux6直连存储挂载磁盘,CentOS7mount网络磁盘的详细步骤
  2. PRD 的编写和修改注意事项
  3. MySQL慢查询日志分析(一)
  4. 你准备好持续交付(CD)了吗?
  5. struts2和servlet同时用(访问servlet时被struts2过滤器拦截问题的解决)
  6. PAT_A1148#Werewolf - Simple Version
  7. 在windowService用Process.Start()启动程序没有界面-记录
  8. pycharm 配置码云(gitee)教程,如何将已有项目push到码云?
  9. ubuntu16.04引导修复不能开机、grub丢失等——这是一剂良药
  10. linux sit0 wifi,I.MX6 AW-NB177NF wifi HAL 调试修改(示例代码)
  11. oracle+查询主机地址,oracle函数:获取Internet主机名和ip地址
  12. 属性面板 脚本_3.1 创建和使用脚本
  13. php theexcerpt,wordpress的excerpt()函数的用法示例
  14. Silverlight之Button控件简单自定义
  15. 关于TikTok的变现思考和三种玩法
  16. SourceTree 教程文档(进阶知识)
  17. C++进阶教程之模板
  18. C++ 非类型的模板参数
  19. linux保密检查工具,linux使用lynis检查系统安全
  20. 第二章 工具变量法(IV)与两阶段最小二乘法

热门文章

  1. Java实习日记(5)
  2. swagger注释API :@ApiModel
  3. 斐讯K2刷不死breed与第三方固件教程
  4. 用Python画填色的中国分省地图(数据+源代码)
  5. MOOC:模式识别——贝叶斯决策理论
  6. java 获取当前时间的时间戳(秒级与毫秒级)
  7. pic单片机c语言計數,单片机教程:PIC单片机C语言程序设计(三)
  8. 操作系统原理(哈工大-李治军老师)实验三系统调用
  9. 推荐几款实用性强的外业勘察地图软件
  10. 用c语言编程计算水力学习题,Anderson 计算流体力学入门 学习小结-一些感想