python pydubの使い方(2)

7968 ワード

AudioSegment.silent()
音声のないオーディオクリップを作成
from pydub import AudioSegment

ten_second_silence = AudioSegment.silent(duration=10000)

パラメータ:
duration:持続時間(ミリ秒)frame_rate:周波数(デフォルト11025(11.025 kHz))
AudioSegment.from_mono_audiosegments()
2つのモノラルを1つのマルチチャネルオーディオに統合
from pydub import AudioSegment

left_channel = AudioSegment.from_wav("sound1.wav")
right_channel = AudioSegment.from_wav("sound1.wav")

stereo_sound = AudioSegment.from_mono_audiosegments(left_channel, right_channel)

AudioSegment(…).dBFS
オーディオファイルボリュームデシベル数を取得
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

loudness = sound.dBFS

AudioSegment(…).channels
オーディオファイルのチャンネル数を取得
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

channel_count = sound.channels

AudioSegment(…).sample_width
オーディオファイルサンプリング幅の取得
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

bytes_per_sample = sound.sample_width

AudioSegment(…).frame_rate
オーディオファイルサンプリング周波数の取得
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

frames_per_second = sound.frame_rate

AudioSegment(…).frame_width
frame_width=sample_width*channels
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

bytes_per_frame = sound.frame_width

AudioSegment(…).rms
一般的にデシベル数(dB=20)を計算するために使用されるオーディオボリュームのサイズを取得します.×lgX)
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

loudness = sound.rms

AudioSegment(…).max
オーディオの最大振幅を取得
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

normalized_sound = sound.apply_gain(-sound.max_dBFS)

AudioSegment(…).duration_seconds
オーディオの持続時間を取得し、len()と同じ
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

assert sound.duration_seconds == (len(sound) / 1000.0)

AudioSegment(…).raw_data
オーディオデータを取得
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

raw_audio_data = sound.raw_data

AudioSegment(…).frame_count()
オーディオのframe数を取得
from pydub import AudioSegment
sound = AudioSegment.from_file("sound1.wav")

number_of_frames_in_sound = sound.frame_count()

number_of_frames_in_200ms_of_sound = sound.frame_count(ms=200)

パラメータ:
ms:0~msミリ秒以内のframe数
AudioSegment(…).append()
sound 1とsound 2を接続し、新しいAudioSegmentインスタンスを返します.
from pydub import AudioSegment
sound1 = AudioSegment.from_file("sound1.wav")
sound2 = AudioSegment.from_file("sound2.wav")

# default 100 ms crossfade
combined = sound1.append(sound2)

# 5000 ms crossfade
combined_with_5_sec_crossfade = sound1.append(sound2, crossfade=5000)

# no crossfade
no_crossfade1 = sound1.append(sound2, crossfade=0)

# no crossfade
no_crossfade2 = sound1 + sound2

パラメータ:
cossfade:クロスグラデーション間隔
AudioSegment(…).overlay()
sound 2をsound 1に上書きすると、2つのオーディオファイルが重なり、sound 2が長いと切断されます.
from pydub import AudioSegment
sound1 = AudioSegment.from_file("sound1.wav")
sound2 = AudioSegment.from_file("sound2.wav")

played_togther = sound1.overlay(sound2)

sound2_starts_after_delay = sound1.overlay(sound2, position=5000)

volume_of_sound1_reduced_during_overlay = sound1.overlay(sound2, gain_during_overlay=-8)

sound2_repeats_until_sound1_ends = sound1.overlay(sound2, loop=true)

sound2_plays_twice = sound1.overlay(sound2, times=2)

# assume sound1 is 30 sec long and sound2 is 5 sec long:
sound2_plays_a_lot = sound1.overlay(sound2, times=10000)
len(sound1) == len(sound2_plays_a_lot)

パラメータ:
position:開始位置を上書き(ミリ秒)
loop:ループオーバーライド(true/false)
times:重複オーバーライド回数(デフォルト1)
gain_during_overlay:オーバーライドされたオーディオの音量を調整(eg,-6.0)
AudioSegment(…).apply_gain( gain )
音量を調整
from pydub import AudioSegment
sound1 = AudioSegment.from_file("sound1.wav")

# make sound1 louder by 3.5 dB
louder_via_method = sound1.apply_gain(+3.5)
louder_via_operator = sound1 + 3.5

# make sound1 quieter by 5.7 dB
quieter_via_method = sound1.apply_gain(-5.7)
quieter_via_operator = sound1 - 5.7

AudioSegment(…).fade()
フェードアウト
from pydub import AudioSegment
sound1 = AudioSegment.from_file("sound1.wav")

fade_louder_for_3_seconds_in_middle = sound1.fade(to_gain=+6.0, start=7500, duration=3000)

fade_quieter_beteen_2_and_3_seconds = sound1.fade(to_gain=-3.5, start=2000, end=3000)

# easy way is to use the .fade_in() convenience method. note: -120dB is basically silent.
fade_in_the_hard_way = sound1.fade(from_gain=-120.0, start=0, duration=5000)
fade_out_the_hard_way = sound1.fade(to_gain=-120.0, end=0, duration=5000)

パラメータ:
to_gain:フェードアウト終了時にオーディオ音量が下がったデシベル数
from_gain:フェードアウト前のすべてのオーディオデシベル数を設定
start:フェードアウトの開始位置
end:フェードアウトの終了位置
duration:持続時間をフェードアウト
AudioSegment(…).fade_out()
無声になる
パラメータ:
duration:持続時間をフェードアウト
AudioSegment(…).reverse()
オーディオを逆再生するオーディオを生成
AudioSegment(…).set_sample_width()
オーディオの新しいコピーを生成し、サンプリング幅を変更しながら、値を大きくすると精度が失われず、値を小さくすると精度が失われます.
AudioSegment(…).set_frame_rate()
サンプリングレートを変更しながらオーディオのコピーを作成し、値を大きくすると精度が失われず、値を小さくすると精度が失われます.
AudioSegment(…).set_channels()
このオーディオのコピーを作成し、同時にチャネル数を変更すると、シングルチャネルからマルチチャネルではオーディオ品質が低下せず、マルチチャネルからシングルチャネルでは左右のチャネルが異なると品質が低下する
AudioSegment(…).split_to_mono()
1つのマルチチャネルオーディオを2つのシングルチャネルに分解する
index[0]は左チャネル
index[1]は右チャンネル
AudioSegment(…).apply_gain_stereo()
マルチチャネルオーディオの左右のチャネル音量を調整
このメソッドがモノラルオーディオで呼び出されると、まずマルチチャネルに変換されます.
from pydub import AudioSegment
sound1 = AudioSegment.from_file("sound1.wav")

# make left channel 6dB quieter and right channe 2dB louder
stereo_balance_adjusted = sound1.apply_gain_stereo(-6, +2)

AudioSegment(…).pan()
左右のチャネルバランスをパーセントで大きくし、反対側を小さくします.
from pydub import AudioSegment
sound1 = AudioSegment.from_file("sound1.wav")

# pan the sound 15% to the right
panned_right = sound1.pan(+0.15)

# pan the sound 50% to the left
panned_left = sound1.pan(-0.50)

A
AudioSegment(…).get_array_of_samples()
オーディオファイルの元のデータsamples配列を取得
マルチチャネルファイルの場合は、同様の値を返します.
[sample_1_L, sample_1_R, sample_2_L, sample_2_R, …].
from pydub import AudioSegment
sound = AudioSegment.from_file(“sound1.wav”)

samples = sound.get_array_of_samples()

# then modify samples...

new_sound = sound._spawn(samples)

samples配列をオーディオに戻す
import array
import numpy as np
from pydub import AudioSegment

sound = AudioSegment.from_file(“sound1.wav”)
samples = sound.get_array_of_samples()

shifted_samples = np.right_shift(samples, 1)

# now you have to convert back to an array.array
shifted_samples_array = array.array(sound.array_type, shifted_samples)

new_sound = sound._spawn(shifted_samples_array)

AudioSegment(…).get_dc_offset()
channelの直流オフセットを取得し、戻り値=オフセットデシベル/最大デシベル
多くのサウンド処理ツールは、既定のサウンドのバランス位置が中央にあり、オフセットすると効果的に変化します.
パラメータ:
チャネル:1左チャネル、2右チャネル、モノラルオーディオにこのパラメータはありません
AudioSegment(…).remove_dc_offset()
直流オフセットを除去します.この方法はaudioopに基づいている.Bias()は、オーバーフローが発生する可能性があります
パラメータ:
channel:1/2/Nene,1左チャネル,2右チャネル,None全チャネル
offset:オフセット率、-1.0~1.0
AudioSegment(…).invert_phase()
DSPベースのレンダリング
逆位相波を除去したり、ノイズを低減したりするために、逆信号のコピーを生成します.