我尝试在 DigitalOcean 应用程序平台上部署我的 Django 应用程序。由于使用 PyAudio 我不得不使用 Dockerfile,因为 python3-pyaudio 需要“apt-get”。我已经创建了 Dockerfile 并成功安装了 PyAudio。不幸的是,我收到错误“OSError:没有可用的默认输入设备”。
[speech-to-text] [2024-02-05 22:42:35] /usr/local/lib/python3.10/site-packages/pydub/utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
[speech-to-text] [2024-02-05 22:42:35] warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
[speech-to-text] [2024-02-05 22:42:35] Not Found: /
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM sysdefault
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM sysdefault
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM default
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM default
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_id returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
[speech-to-text] [2024-02-05 22:42:40] ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM dmix
[speech-to-text] [2024-02-05 22:42:40] Cannot connect to server socket err = No such file or directory
[speech-to-text] [2024-02-05 22:42:40] Cannot connect to server request channel
[speech-to-text] [2024-02-05 22:42:40] jack server is not running or cannot be started
[speech-to-text] [2024-02-05 22:42:40] JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
[speech-to-text] [2024-02-05 22:42:40] JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
[speech-to-text] [2024-02-05 22:42:40] Internal Server Error: /voice/
[speech-to-text] [2024-02-05 22:42:40] Traceback (most recent call last):
[speech-to-text] [2024-02-05 22:42:40] File "/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner
[speech-to-text] [2024-02-05 22:42:40] response = get_response(request)
[speech-to-text] [2024-02-05 22:42:40] File "/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response
[speech-to-text] [2024-02-05 22:42:40] response = wrapped_callback(request, *callback_args, **callback_kwargs)
[speech-to-text] [2024-02-05 22:42:40] File "/usr/local/lib/python3.10/site-packages/django/views/generic/base.py", line 104, in view
[speech-to-text] [2024-02-05 22:42:40] return self.dispatch(request, *args, **kwargs)
[speech-to-text] [2024-02-05 22:42:40] File "/usr/local/lib/python3.10/site-packages/django/views/generic/base.py", line 143, in dispatch
[speech-to-text] [2024-02-05 22:42:40] return handler(request, *args, **kwargs)
[speech-to-text] [2024-02-05 22:42:40] File "/app/recognize/views.py", line 54, in get
[speech-to-text] [2024-02-05 22:42:40] txt = self.getText()
[speech-to-text] [2024-02-05 22:42:40] File "/app/recognize/views.py", line 39, in getText
[speech-to-text] [2024-02-05 22:42:40] with sr.Microphone() as source:
[speech-to-text] [2024-02-05 22:42:40] File "/usr/local/lib/python3.10/site-packages/speech_recognition/__init__.py", line 87, in __init__
[speech-to-text] [2024-02-05 22:42:40] device_info = audio.get_device_info_by_index(device_index) if device_index is not None else audio.get_default_input_device_info()
[speech-to-text] [2024-02-05 22:42:40] File "/usr/local/lib/python3.10/site-packages/pyaudio/__init__.py", line 812, in get_default_input_device_info
[speech-to-text] [2024-02-05 22:42:40] device_index = pa.get_default_input_device()
[speech-to-text] [2024-02-05 22:42:40] OSError: No Default Input Device Available
这是我的 Dockerfile
# Use the official Python image as the base image
FROM python:3.10-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any dependencies specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install gunicorn
# Install system dependencies
RUN apt-get update && apt-get install -y \
apt-utils \
portaudio19-dev \
python3-dev \
gcc
# Install python3.X-pyaudio (adjust X to your Python version)
RUN apt-get install python3-pyaudio
# Install pyaudio for the Python environment
RUN pip install pyaudio
# Expose port 8000 to the outside world
EXPOSE 8000
# Command to run your application
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--worker-tmp-dir", "/dev/shm", "speechai.wsgi:application"]
有人遇到过此类问题吗?不幸的是我找不到任何解决方案。
提前感谢您的帮助
我不了解您的应用程序,因此我创建了一个简单的脚本来复制问题。它只是播放 WAV 文件。使用现有设置,此脚本会产生基本相同的错误。
🗎
audio.py
import wave
import sys
import pyaudio
CHUNK = 1024
with wave.open('StarWars3.wav', 'rb') as wf:
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)
while len(data := wf.readframes(CHUNK)):
stream.write(data)
stream.close()
p.terminate()
为 Python 包创建了需求文件。
🗎
requirements.txt
gunicorn==21.2.0
PyAudio==0.2.14
并削减你的 Docker 配置。
🗎
Dockerfile
FROM python:3.10-slim
WORKDIR /app
RUN apt-get update && apt-get install -y \
apt-utils \
portaudio19-dev \
python3-dev \
gcc \
wget
COPY requirements.txt /app
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
COPY . /app
# Get some sample audio.
RUN wget -q https://www2.cs.uic.edu/~i101/SoundFiles/StarWars3.wav
CMD ["python3", "audio.py"]
关键是您需要与容器共享主机的音频设备。您可以通过
--device
的 docker run
参数来完成此操作。
docker run -it --device /dev/snd ...
通过此设置,您应该听到几秒钟的戏剧性音频。
🚨我安装了
wget
来下载音频样本。您可以将其从Dockerfile
中删除。