Docker 中的 Python Django - 输入设备错误

问题描述 投票:0回答:1

我尝试在 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"]

有人遇到过此类问题吗?不幸的是我找不到任何解决方案。

提前感谢您的帮助

python django docker digital-ocean
1个回答
0
投票

我不了解您的应用程序,因此我创建了一个简单的脚本来复制问题。它只是播放 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
中删除。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.