SoundCard icon indicating copy to clipboard operation
SoundCard copied to clipboard

Wav file is empty after recording is saved to file

Open MarkoKurtovic opened this issue 2 years ago • 5 comments

import soundcard as sc
import numpy
import soundfile

# get a list of all speakers:
speakers = sc.all_speakers()

# get the current default speaker on your system:
default_speaker = sc.default_speaker()

# get a list of all microphones:
mics = sc.all_microphones()

# get the current default microphone on your system:
default_mic = sc.default_microphone()
one_speaker = sc.get_speaker('IEC958')



# record and play back one second of audio:
data = default_mic.record(samplerate=48000, numframes=48000)
default_speaker.play(data/numpy.max(data), samplerate=48000)

# alternatively, get a `Recorder` and `Player` object
# and play or record continuously:
with default_mic.recorder(samplerate=48000) as mic, \
      default_speaker.player(samplerate=48000) as sp:
    for _ in range(400):
        data = mic.record(numframes=1024)
        sp.play(data)
        soundfile.write("x.wav", data, 1024)
        soundfile.read("x.wav")
        

MarkoKurtovic avatar Oct 02 '22 09:10 MarkoKurtovic

I got few seconds of wav file but can't hear anything. I tried to change numframes, no luck

MarkoKurtovic avatar Oct 02 '22 09:10 MarkoKurtovic

What sound card are you using? Is it the correct one?

bastibe avatar Oct 03 '22 07:10 bastibe

Not sure which one, but recording and playing is working

MarkoKurtovic avatar Oct 03 '22 07:10 MarkoKurtovic

@bastibe

This is what I get when I print all_speakers() and all_microfons()

<Speaker Logi USB Headset Analog Stereo (2 channels)> [<Microphone Logi USB Headset Analog Mono (1 channels)>, <Microphone HD-Audio Generic Analog Stereo (2 channels)>]

MarkoKurtovic avatar Oct 03 '22 13:10 MarkoKurtovic

It might be that the sample rates of your sound cards are out-of-sync. Try reversing the order of play and record.

bastibe avatar Oct 04 '22 13:10 bastibe