2016-03-15 4 views
1

У меня есть хороший волновой файл голоса, который не хорошо воспроизводится при использовании примеров программ Python, поставляемых с установкой PYAUDIO. Это воспроизведение хорошо с -aplayПроблемы с качеством звука Pyaudio

Использование play_wave.py качество звука хорошее, за исключением громким повторяющимся шума (~ 6 Гц) в фоновом режиме

Использование play_wave_callback.py шаг записи голоса значительно увеличивается, а фоновый шум больше гудения сейчас (40-70 Гц)

качество звука хорошее при использовании
**aplay** -vv -D plughw:1,0 -f s16_le output.wav

Интересно, что два примера программ дают совершенно другое качество, в то время как качество звука -aplay хорошее. Это может быть одна и та же проблема. Частота фонового шума увеличилась примерно на 10X, а высота голоса значительно увеличилась.

Любые предложения?

Дополнительная информация: Я запускаю эти примеры программ на Raspberry Pi 2 с Raspbian Jessie, которые я загружаю в марте 2016 года. Звук воспроизводится через звуковую карту USB. Я снял бортовую звуковую карту, удалив одну строку в /boot/config.txt

#dtparam=audio=on 

APlay -l выходы

[email protected]:~ $ aplay -l 
**** List of PLAYBACK Hardware Devices **** 
card 1: Set [C-Media USB Headphone Set], device 0: USB Audio [USB Audio] 
    Subdevices: 1/1 
    Subdevice #0: subdevice #0 
[email protected]:~ $ 

Использование APlay качество звука хорошее, вот выход

[email protected]:~/programs $ aplay -vv -D plughw:1,0 -f s16_le output.wav 
Playing WAVE 'output.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono 
Plug PCM: Route conversion PCM (sformat=S16_LE) 
    Transformation table: 
    0 <- 0 
    1 <- 0 
Its setup is: 
    stream  : PLAYBACK 
    access  : RW_INTERLEAVED 
    format  : S16_LE 
    subformat : STD 
    channels  : 1 
    rate   : 44100 
    exact rate : 44100 (44100/1) 
    msbits  : 16 
    buffer_size : 22050 
    period_size : 5513 
    period_time : 125011 
    tstamp_mode : NONE 
    period_step : 1 
    avail_min : 5513 
    period_event : 0 
    start_threshold : 22050 
    stop_threshold : 22050 
    silence_threshold: 0 
    silence_size : 0 
    boundary  : 1445068800 
Slave: Hardware PCM card 1 'C-Media USB Headphone Set' device 0 subdevice 0 
Its setup is: 
    stream  : PLAYBACK 
    access  : MMAP_INTERLEAVED 
    format  : S16_LE 
    subformat : STD 
    channels  : 2 
    rate   : 44100 
    exact rate : 44100 (44100/1) 
    msbits  : 16 
    buffer_size : 22050 
    period_size : 5513 
    period_time : 125011 
    tstamp_mode : NONE 
    period_step : 1 
    avail_min : 5513 
    period_event : 0 
    start_threshold : 22050 
    stop_threshold : 22050 
    silence_threshold: 0 
    silence_size : 0 
    boundary  : 1445068800 
    appl_ptr  : 0 
    hw_ptr  : 0 
# +            | 04% 
[email protected]:~/programs $ 

Использование play_wave.py Качество звука хорошее, за исключением громкого повторяющегося шума (~ 5-10 Гц) в фоновом режиме. Heres полный код:

"""PyAudio Example: Play a wave file.""" 

import pyaudio 
import wave 
import sys 

CHUNK = 1024 * 8 

#if len(sys.argv) < 2: 
# print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0]) 
# sys.exit(-1) 

wf = wave.open('output.wav', 'rb') 

# instantiate PyAudio (1) 
p = pyaudio.PyAudio() 

# open stream (2) 
#stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), 
#    channels=wf.getnchannels(), 
#    rate=wf.getframerate(), 
#    output=True) 

FORMAT = pyaudio.paInt16 
CHANNELS = 1 
RATE = 44100 
RECORD_SECONDS = 5 

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), 
       channels=wf.getnchannels(), 
       rate=wf.getframerate(), 
       output=True) 

# read data 
data = wf.readframes(CHUNK) 

# play stream (3) 
while data != '': 
    stream.write(data) 
    data = wf.readframes(CHUNK) 

# stop stream (4) 
stream.stop_stream() 
stream.close() 

# close PyAudio (5) 
p.terminate() 

Выход из этой программы

ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM sysdefault 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM sysdefault 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM front 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround21 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround21 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround40 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround41 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround50 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround51 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM surround71 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM iec958 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM spdif 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM spdif 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline 
ALSA lib confmisc.c:768:(parse_card) cannot find card '0' 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory 
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory 
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name 
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory 
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM dmix 
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 


------------------ 
(program exited with code: 0) 
Press return to continue 

ответ

0

Я не знаю, что это проблема с PyAudio, но если вы хотите попробовать что-то другое, посмотрите на это пример: http://python-sounddevice.readthedocs.org/en/latest/examples.html#play-a-sound-file.

Это быстрый экстракт из примера:

import sounddevice as sd 
import soundfile as sf 
data, fs = sf.read('myfile.wav') 
sd.play(data, fs) 

Этот пример необходим NumPy. Если вы не хотите устанавливать это, это будет немного сложнее (подобно вашему коду PyAudio), но оно все еще работает.

Вы можете установить необходимые библиотеки с

python3 -m pip install soundfile sounddevice 
Смежные вопросы