Как удалить ошибки PyAudio? - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь решить принятый вопрос, который демонстрирует, как создать звуковой сигнал с помощью PyAudio. Странно, я вижу довольно много ошибок. К сожалению, я никогда не отправлял аудиоданные программно на звуковую карту, поэтому не знаю, как избавиться от ошибок. Интернет был не очень полезным, поэтому не могли бы вы дать мне несколько советов? Спасибо!

Вот короткая программа, которая издает звуковой сигнал, как показано в ответе на StackOverflow:

#!/usr/bin/python3

import math

from pyaudio import PyAudio # sudo apt-get install python{,3}-pyaudio

def sine_tone(frequency:float, duration:float, volume:int = 1, sampleRate:int = 22050):
    n_samples = int(sampleRate * duration)
    restframes = n_samples % sampleRate

    p = PyAudio()
    stream = p.open(format=p.get_format_from_width(1), # 8bit
                    channels=1, # mono
                    rate=sampleRate,
                    output=True)
    s = lambda t: volume * math.sin(2 * math.pi * frequency * t / sampleRate)
    samples = (int(s(t) * 0x7f + 0x80) for t in range(n_samples))
    if duration < 1:
        stream.write(bytes(bytearray(samples)))
    else:
        for buf in zip(*[samples]*sampleRate): # write several samples at a time
            stream.write(bytes(bytearray(buf)))

    # fill remainder of frameset with silence
    stream.write(b'\x80' * restframes)

    stream.stop_stream()
    stream.close()
    p.terminate()
#

sine_tone(500, 1)

Это приведет к тому, что следующие выходные строки будут отправлены в STDERR:

ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map
ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock

Почему сообщения отправляются в STDERR, что они означают и как от них избавиться (так как звук воспроизводится, как и ожидалось)?

...