0
PythonのSoundcardで音声の入出力、ファイルでのやり取りをする
2023-04-18

Pythonのsoundcard,soundfileを使って音声ファイルを扱う

前提としてWSL2(Ubuntu)を使っている

WSLgが使えるようになったのでWSL上で音声のやりとりができるようになった

WSLgが用意してくれているサウンドデバイスは1つっぽいのでdefault_speaker,default_micで読み込める

  • 動作環境
$ wsl --version
WSL バージョン: 1.2.0.0
カーネル バージョン: 5.15.90.1
WSLg バージョン: 1.0.51
MSRDC バージョン: 1.2.3770
Direct3D バージョン: 1.608.2-61064218
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.19045.2846

ファイルをコマンドライン引数から受け取り、読み込んで音声を出力

import soundcard as sc
import soundfile as sf
import sys

samplerate = 48000
read_wave_path = sys.argv[1]

default_speaker = sc.default_speaker()

with default_speaker.player(samplerate=samplerate) as sp:
    print(f"Reading...({read_wave_path})")
    data, fs = sf.read(read_wave_path)
    print("Playing...\n")
    sp.play(data)

音声入力からファイルへ保存

import soundcard as sc
import soundfile as sf

samplerate = 48000
recording_sec = 5
filename = 'outfile.wav'

default_mic = sc.default_microphone()

with default_mic.recorder(samplerate=samplerate) as mic:
    print("Recording...")
    data = mic.record(numframes=samplerate*recording_sec)
    print("Saving...\n")
    sf.write(filename, data, samplerate)
0

Profile

swfz
swfz
日々学んだことを残していく
Today I Learned
コード片置き場

Account

RSS

Powered by Pixela
© 2024. swfz