Pyaudio управлять устройствами
Простой скрипт:
import pyaudio
p = pyaudio.PyAudio()
print(p.get_device_count())
Печать 0
Поэтому, когда я пытаюсь играть с wav или записывать с микрофона, я получаю следующие ошибки.
OSError: [Errno -9996] Недопустимое устройство вывода (нет устройства вывода по умолчанию)
OSError: [Errno -9996] Недопустимое устройство ввода (нет устройства вывода по умолчанию)
Вот что я почти сделал с момента установки рабочего стола ubuntu20.04.
- Установите Sublime Text Editor из центра программного обеспечения ubuntu
- Измените настройки Sublime 2a. Предпочтения -> Цветовая схема... -> Брейкеры 2b. Просмотр -> Боковая панель -> Показать открытые файлы
- Добавить возвышенное в избранное
- Добавить терминал в избранное
- Изменить фоновое изображение (не выполнено)
- sudo apt-get update
- sudo apt-get install -y build-essential checkinstall
- sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
- cd / usr / src
- sudo wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
- sudo tar xzf Python-3.6.9.tgz
- компакт-диск Python-3.6.9
- sudo./configure --enable-optimizations
- sudo сделать altinstall
- Скопируйте папку проигрывателя Papinhio проекта в /home/chris/Documents/Python из разделов Windows 10.
- Скопируйте папку Музыка из раздела Windows 10.
- Установите сервер Xampp с apachefriends.org (chmod +x xampp-linux-x64-7.4.6-0-installer.run)
- Запустить сервер Apache
- Запустить сервер Mysql
apt установить python3-pip
Загрузите соединитель mysql для источника Python (https://pypi.org/project/mysql-connector-python/)
- cd /home/chris/Downloads/mysql-connector-python-8.0.20
- сборка python3.6 setup.py
установка python3.6 setup.py
Запуск /home/chris/Documents/Python/Papinhio player/version 2/main/test/insert_songs.py успешно
- pip3 установить fontawesome
- sudo apt-get update -y
- sudo apt-get install -y fonts-font-awesome
- pip3 установить pypandoc
- pip3 установить py-pandoc
- Загрузка с: https://pypi.org/project/pypandoc/, затем сборка python3.6 setup.py и установка python3.6 setup.py
- Загрузите fontawesome с https://pypi.org/project/fontawesome/, затем установите python3.6 setup.py и установите python3.6 setup.py
- Скачано с: https://pypi.org/project/python-shout/
- sudo apt-get update -y
- sudo apt-get install -y pkg-config
sudo pip3 установить подушку
Загрузите подушку с https://pypi.org/project/Pillow/2.1.0/
- сборка python3.6 setup.py
- установка python3.6 setup.py
- pip3 установить python-resize-image
- Загрузите изображение для изменения размера с https://pypi.org/project/python-resize-image/
- сборка python3.6 setup.py
- установка python3.6 setup.py
- pip3 установить pyaudio
- pip3 установить PyAudio
- Загрузите portaudio с http://portaudio.com/download.html 50./configure & make
- сделать установку
- Загрузите pyaudio с https://pypi.org/project/PyAudio/
- сборка python3.6 setup.py
- python3.6 setuo.py установить
- apt-get установить portaudio19-dev
- apt-get установить python3-all-dev
- pip3 установить numpy
subl /etc/asound.conf pcm.!default {тип hw card 1 device 0 rate 44100}
ctl.!default {type hw
card 0}sudo apt-get purge bluez-alsa
- sudo add-apt-repository ppa:ubuntu-audio-dev / alsa-daily
- sudo apt-get update
- sudo apt-get dist-upgrade
- sudo apt-get install --reinstall dkms linux-image-generic linux-headers-generic linux-tools-generic linux-source alsa-firmware-loaders alsa-base alsa-utils alsa-source alsa-tools python3-alsaaudio python3-pyalsa
- sudo apt-get install libasound-dev
- sudo alsactl init
- cp "/usr/lib/x86_64-linux-gnu/libstdc++.so.6" "/usr/./libstdc++.so.6"
- cp /usr/share/alsa/alsa.conf /usr/share/alsa/alsa.conf.back 70 subl /usr/share/alsa/alsa.conf
# # Файл конфигурации библиотеки ALSA #
# pre-load the configuration files @hooks [ { func load files [ "/etc/alsa/conf.d" "/etc/asound.conf" "~/.asoundrc" ] errors false } ] # load card-specific configuration files (on request) cards.@hooks [ { func load files [ { @func concat strings [ { @func datadir } "/cards/aliases.conf" ] } ] } { func load_for_all_cards files [ { @func concat strings [ { @func datadir } "/cards/" { @func private_string } ".conf" ] } ] errors false } ] # # defaults # # show all name hints also for definitions without hint {} section defaults.namehint.showall on # show just basic name hints defaults.namehint.basic on # show extended name hints defaults.namehint.extended on # #defaults.ctl.card 0 #defaults.pcm.card 0 defaults.pcm.device 0 defaults.pcm.subdevice -1 defaults.pcm.nonblock 1 defaults.pcm.compat 0 defaults.pcm.minperiodtime 5000 # in us defaults.pcm.ipc_key 5678293 defaults.pcm.ipc_gid audio defaults.pcm.ipc_perm 0660 defaults.pcm.dmix.max_periods 0 defaults.pcm.dmix.channels 2 defaults.pcm.dmix.rate 48000 defaults.pcm.dmix.format "unchanged" defaults.pcm.dmix.card defaults.pcm.card defaults.pcm.dmix.device defaults.pcm.device defaults.pcm.dsnoop.card defaults.pcm.card defaults.pcm.dsnoop.device defaults.pcm.device defaults.pcm.front.card defaults.pcm.card defaults.pcm.front.device defaults.pcm.device defaults.pcm.rear.card defaults.pcm.card defaults.pcm.rear.device defaults.pcm.device defaults.pcm.center_lfe.card defaults.pcm.card defaults.pcm.center_lfe.device defaults.pcm.device defaults.pcm.side.card defaults.pcm.card defaults.pcm.side.device defaults.pcm.device defaults.pcm.surround21.card defaults.pcm.card defaults.pcm.surround21.device defaults.pcm.device defaults.pcm.surround40.card defaults.pcm.card defaults.pcm.surround40.device defaults.pcm.device defaults.pcm.surround41.card defaults.pcm.card defaults.pcm.surround41.device defaults.pcm.device defaults.pcm.surround50.card defaults.pcm.card defaults.pcm.surround50.device defaults.pcm.device defaults.pcm.surround51.card defaults.pcm.card defaults.pcm.surround51.device defaults.pcm.device defaults.pcm.surround71.card defaults.pcm.card defaults.pcm.surround71.device defaults.pcm.device defaults.pcm.iec958.card defaults.pcm.card defaults.pcm.iec958.device defaults.pcm.device defaults.pcm.modem.card defaults.pcm.card defaults.pcm.modem.device defaults.pcm.device # truncate files via file or tee PCM defaults.pcm.file_format "raw" defaults.pcm.file_truncate true defaults.rawmidi.card 0 defaults.rawmidi.device 0 defaults.rawmidi.subdevice -1 defaults.hwdep.card 0 defaults.hwdep.device 0 defaults.timer.class 2 defaults.timer.sclass 0 defaults.timer.card 0 defaults.timer.device 0 defaults.timer.subdevice 0 # # PCM interface # # redirect to load-on-demand extended pcm definitions pcm.cards cards.pcm pcm.default cards.pcm.default pcm.sysdefault cards.pcm.default pcm.front cards.pcm.front #pcm.rear cards.pcm.rear #pcm.center_lfe cards.pcm.center_lfe #pcm.side cards.pcm.side pcm.surround21 cards.pcm.surround21 pcm.surround40 cards.pcm.surround40 pcm.surround41 cards.pcm.surround41 pcm.surround50 cards.pcm.surround50 pcm.surround51 cards.pcm.surround51 pcm.surround71 cards.pcm.surround71 pcm.iec958 cards.pcm.iec958 pcm.spdif iec958 pcm.hdmi cards.pcm.hdmi pcm.dmix cards.pcm.dmix pcm.dsnoop cards.pcm.dsnoop pcm.modem cards.pcm.modem pcm.phoneline cards.pcm.phoneline pcm.hw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } } @args.SUBDEV { type integer default { @func refer name defaults.pcm.subdevice } } type hw card $CARD device $DEV subdevice $SUBDEV hint { show { @func refer name defaults.namehint.extended } description "Direct hardware device without any conversions" } } pcm.plughw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_PCM_CARD ALSA_CARD ] default { @func refer name defaults.pcm.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_PCM_DEVICE ] default { @func refer name defaults.pcm.device } } } @args.SUBDEV { type integer default { @func refer name defaults.pcm.subdevice } } type plug slave.pcm { type hw card $CARD device $DEV subdevice $SUBDEV } hint { show { @func refer name defaults.namehint.extended } description "Hardware device with all software conversions" } } pcm.plug { @args [ SLAVE ] @args.SLAVE { type string } type plug slave.pcm $SLAVE } pcm.shm { @args [ SOCKET PCM ] @args.SOCKET { type string } @args.PCM { type string } type shm server $SOCKET pcm $PCM } pcm.tee { @args [ SLAVE FILE FORMAT ] @args.SLAVE { type string } @args.FILE { type string } @args.FORMAT { type string default { @func refer name defaults.pcm.file_format } } type file slave.pcm $SLAVE file $FILE format $FORMAT truncate { @func refer name defaults.pcm.file_truncate } } pcm.file { @args [ FILE FORMAT ] @args.FILE { type string } @args.FORMAT { type string default { @func refer name defaults.pcm.file_format } } type file slave.pcm null file $FILE format $FORMAT truncate { @func refer name defaults.pcm.file_truncate } } pcm.null { type null hint { show { @func refer name defaults.namehint.basic } description "Discard all samples (playback) or generate zero samples (capture)" } } # # Control interface # ctl.sysdefault { type hw card { @func getenv vars [ ALSA_CTL_CARD ALSA_CARD ] default { @func refer name defaults.ctl.card } } hint.description "Default control device" } ctl.default ctl.sysdefault ctl.hw { @args [ CARD ] @args.CARD { type string default { @func getenv vars [ ALSA_CTL_CARD ALSA_CARD ] default { @func refer name defaults.ctl.card } } } type hw card $CARD hint.description "Direct control device" } ctl.shm { @args [ SOCKET CTL ] @args.SOCKET { type string } @args.CTL { type string } type shm server $SOCKET ctl $CTL } # # RawMidi interface # rawmidi.default { type hw card { @func getenv vars [ ALSA_RAWMIDI_CARD ALSA_CARD ] default { @func refer name defaults.rawmidi.card } } device { @func igetenv vars [ ALSA_RAWMIDI_DEVICE ] default { @func refer name defaults.rawmidi.device } } hint.description "Default raw MIDI device" } rawmidi.hw { @args [ CARD DEV SUBDEV ] @args.CARD { type string default { @func getenv vars [ ALSA_RAWMIDI_CARD ALSA_CARD ] default { @func refer name defaults.rawmidi.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_RAWMIDI_DEVICE ] default { @func refer name defaults.rawmidi.device } } } @args.SUBDEV { type integer default -1 } type hw card $CARD device $DEV subdevice $SUBDEV hint { description "Direct rawmidi driver device" device $DEV } } rawmidi.virtual { @args [ MERGE ] @args.MERGE { type string default 1 } type virtual merge $MERGE } # # Sequencer interface # seq.default { type hw hint.description "Default sequencer device" } seq.hw { type hw } # # HwDep interface # hwdep.default { type hw card { @func getenv vars [ ALSA_HWDEP_CARD ALSA_CARD ] default { @func refer name defaults.hwdep.card } } device { @func igetenv vars [ ALSA_HWDEP_DEVICE ] default { @func refer name defaults.hwdep.device } } hint.description "Default hardware dependent device" } hwdep.hw { @args [ CARD DEV ] @args.CARD { type string default { @func getenv vars [ ALSA_HWDEP_CARD ALSA_CARD ] default { @func refer name defaults.hwdep.card } } } @args.DEV { type integer default { @func igetenv vars [ ALSA_HWDEP_DEVICE ] default { @func refer name defaults.hwdep.device } } } type hw card $CARD device $DEV hint { description "Direct hardware dependent device" device $DEV } } # # Timer interface # timer_query.default { type hw } timer_query.hw { type hw } timer.default { type hw class { @func refer name defaults.timer.class } sclass { @func refer name defaults.timer.sclass } card { @func refer name defaults.timer.card } device { @func refer name defaults.timer.device } subdevice { @func refer name defaults.timer.subdevice } hint.description "Default timer device" } timer.hw { @args [ CLASS SCLASS CARD DEV SUBDEV ] @args.CLASS { type integer default { @func refer name defaults.timer.class } } @args.SCLASS { type integer default { @func refer name defaults.timer.sclass } } @args.CARD { type string default { @func refer name defaults.timer.card } } @args.DEV { type integer default { @func refer name defaults.timer.device } } @args.SUBDEV { type integer default { @func refer name defaults.timer.subdevice } } type hw class $CLASS sclass $SCLASS card $CARD device $DEV subdevice $SUBDEV hint { description "Direct timer device" device $DEV } }
- subl /etc/modprobe.d/default.conf параметры snd_hda_intel index=1
- sudo apt-get install jackd qjackctl openjdk-8-jdk
- jackd -d alsa -d hw:1,3 -r 44100
- sudo apt-get install -y libshout3-dev
- sudo cp "/usr/lib/x86_64-linux-gnu/libstdc++.so.6" "/usr/./libstdc++.so.6"
- скачать с https://pypi.org/project/python-shout3/
- сборка python3.6 setup.py
- установка python3.6 setup.py
- sudo apt-get install portaudio19-dev
- pip3 установить звуковое устройство --user
- sudo apt-get install portaudio19-dev python3-pyaudio
- Установите Audacity из программного центра ubuntu
- sudo apt установить pavucontrol
- sudo apt-add-repository ppa:audio-recorder / ppa sudo apt-get update sudo apt-get установить аудиорекордер
- Установка anydesk
wget -qO - https://keys.anydesk.com/repos/DEB-GPG-KEY | sudo apt-key добавить -
sudo sh -c 'echo "deb http://deb.anydesk.com/ all main"> /etc/apt/sources.list.d/anydesk-stable.list'
sudo apt update
sudo apt установить anydesk
- pip3 установить pydub
- apt-get install ffmpeg
- pip3 установить simpleaudio
Я хорошо слышу звуки из ритмбокса.
Я могу записывать звук от наглости, но в низком качестве.
Любые советы были бы полезны!!!
Изменить: попытка скомпилировать http://portaudio.com/docs/v19-doxydocs/pa__devs_8c_source.html
где portaudio.h
-> а затем cp /usr/include/portaudio.h /home/chris/Desktop
Ошибки:
/usr/bin/ld: /tmp/ccqdH0Ig.o: in function `PrintSupportedStandardSampleRates':
hello.c:(.text+0x53): undefined reference to `Pa_IsFormatSupported'
/usr/bin/ld: /tmp/ccqdH0Ig.o: in function `main':
hello.c:(.text+0x178): undefined reference to `Pa_Initialize'
/usr/bin/ld: hello.c:(.text+0x1a1): undefined reference to `Pa_GetVersion'
/usr/bin/ld: hello.c:(.text+0x1be): undefined reference to `Pa_GetVersionInfo'
/usr/bin/ld: hello.c:(.text+0x1db): undefined reference to `Pa_GetDeviceCount'
/usr/bin/ld: hello.c:(.text+0x231): undefined reference to `Pa_GetDeviceInfo'
/usr/bin/ld: hello.c:(.text+0x257): undefined reference to `Pa_GetDefaultInputDevice'
/usr/bin/ld: hello.c:(.text+0x284): undefined reference to `Pa_GetHostApiInfo'
/usr/bin/ld: hello.c:(.text+0x29a): undefined reference to `Pa_GetHostApiInfo'
/usr/bin/ld: hello.c:(.text+0x2c6): undefined reference to `Pa_GetDefaultOutputDevice'
/usr/bin/ld: hello.c:(.text+0x316): undefined reference to `Pa_GetHostApiInfo'
/usr/bin/ld: hello.c:(.text+0x32c): undefined reference to `Pa_GetHostApiInfo'
/usr/bin/ld: hello.c:(.text+0x3b2): undefined reference to `Pa_GetHostApiInfo'
/usr/bin/ld: hello.c:(.text+0x591): undefined reference to `Pa_Terminate'
/usr/bin/ld: hello.c:(.text+0x5a9): undefined reference to `Pa_Terminate'
/usr/bin/ld: hello.c:(.text+0x5d1): undefined reference to `Pa_GetErrorText'
Я также попробовал альтернативный https://github.com/larsimmisch/pyalsaaudio. Я могу воспроизводить файлы wav, но качество записи очень низкое.