Example #1
0
def test_available_subtypes():
    subtypes = sf.available_subtypes()
    assert 'PCM_24' in subtypes
    assert 'FLOAT' in subtypes
    assert 'VORBIS' in subtypes
    subtypes = sf.available_subtypes('WAV')
    assert 'PCM_24' in subtypes
    assert 'FLOAT' in subtypes
    assert 'VORBIS' not in subtypes
    subtypes = sf.available_subtypes('nonsense')
    assert subtypes == {}
Example #2
0
def test_available_subtypes():
    subtypes = sf.available_subtypes()
    assert 'PCM_24' in subtypes
    assert 'FLOAT' in subtypes
    assert 'VORBIS' in subtypes
    subtypes = sf.available_subtypes('WAV')
    assert 'PCM_24' in subtypes
    assert 'FLOAT' in subtypes
    assert 'VORBIS' not in subtypes
    subtypes = sf.available_subtypes('nonsense')
    assert subtypes == {}
Example #3
0
def cli(input_file, input_text, speed, tone, output_file, output_format,
        output_subtype, list_formats, list_subtypes, letter_space_factor):

    if list_formats:
        for key, value in soundfile.available_formats().items():
            click.echo('\x1b[1m{:<10}\x1b[0m {}'.format(key, value))
        return

    if list_subtypes:
        for key, value in soundfile.available_subtypes(list_subtypes).items():
            click.echo('\x1b[1m{:<10}\x1b[0m {}'.format(key, value))
        return

    if not input_text:
        input_text = input_file.read()

    options = dict(samplerate=44100,
                   channels=1,
                   subtype=output_subtype,
                   format=output_format)

    with soundfile.SoundFile(output_file, 'w', **options) as fp:
        stream_morse_code(fp,
                          input_text,
                          wpm=speed,
                          tone=tone,
                          letter_space_factor=letter_space_factor)
Example #4
0
def find_soundfile_subtype(depth, default=16):
    """ Find wav subtype for given bit depth"""
    try:
        subs = sf.available_subtypes("wav")
        r = next(k for k in subs
                 if k.startswith("PCM") and k.endswith(str(depth)))
    except StopIteration:
        print("depth not available, default {} bits selected".format(default))
        r = "PCM_{}".format(default)
    return r
Example #5
0
def change_format_and_subtype(audio_path):
    audio, sr = sf.read(audio_path)
    audio_info = sf.info(audio_path)

    formats = ['WAV', 'FLAC']
    if audio_info.format in formats:
        formats.remove(audio_info.format)
    _format = random.choice(formats)

    subtypes = sf.available_subtypes(_format)
    accepted_subtypes = ['PCM_16', 'PCM_32', 'PCM_24', 'FLOAT', 'DOUBLE']
    subtypes = [s for s in subtypes.keys() if s in accepted_subtypes]
    if audio_info.subtype in subtypes:
        subtypes.remove(audio_info.subtype)
    _subtype = random.choice(subtypes)

    sf.write(audio_path, audio, sr, subtype=_subtype, format=_format)
import wave
import librosa
import soundfile as sf
import numpy as np
x, _ = librosa.load('./8bit_8000hz.WAV', sr=8000)
print(len(x))

sf.write('tmp.wav', x, 8000, 'PCM_U8')
# wave.open('tmp.wav','r')

# sf.write('stereo_file.flac', np.random.randn(10), 8000, 'PCM_S8')

print("fac types", sf.available_subtypes('FLAC'))
print("wav types", sf.available_subtypes('WAV'))
Example #7
0
import soundfile as sf

if __name__ == '__main__':
    print(sf.default_subtype('WAV'))
    print(sf.available_subtypes('WAV'))
    #    DATA, SAMPLERATE = sf.read(file='test_in_32bit_float.wav', dtype='float32')
    #    sf.write(file='test_out_32bit_float.wav', data=DATA, samplerate=SAMPLERATE, subtype='PCM_16')
    # read int -> float
    #    DATA, SAMPLERATE = sf.read(file='test_in_16bit_int.wav', dtype='float32')
    #    sf.write(file='test_out_32bit_float.wav', data=DATA, samplerate=SAMPLERATE, subtype='FLOAT')
    # read float -> int
    #    DATA, SAMPLERATE = sf.read(file='test_in_32bit_float.wav', dtype='int16')
    #    sf.write(file='test_out_16bit_int.wav', data=DATA, samplerate=SAMPLERATE, subtype='PCM_16')
    # write int -> float
    #    DATA, SAMPLERATE = sf.read(file='test_in_16bit_int.wav', dtype='int16')
    #    sf.write(file='test_out_32bit_float.wav', data=DATA, samplerate=SAMPLERATE, subtype='FLOAT')
    # write float -> int
    print(sf.info('test_in_32bit_float.wav', False))
    DATA, SAMPLERATE = sf.read(file='test_in_32bit_float.wav', dtype='float32')
    sf.write(file='test_out_16bit_int.wav',
             data=DATA,
             samplerate=SAMPLERATE,
             subtype='PCM_16')