私はこのクラスを作りました:
class AudioSegmentCustom(AudioSegment):
def fade_override(self, seg, fade_len=100):
seg1, seg2 = AudioSegment._sync(self, seg)
final = seg1[:-fade_len]
a_fin = seg1[-fade_len:].fade(to_gain=-120, start=0, end=float('inf'))
a_fin *= seg2[:fade_len]
return (final + a_fin) + seg2[fade_len:]
私が直面している問題は、いくつかのAudioSegmentCustom
変数を作成するときです。それらを「追加」すると、add
操作は元の親タイプを返します =AudioSegment
したがって、次のコードは機能しません。
final = AudioSegmentCustom.from_mp3(mp3_src) + AudioSegment.from_mp3(mp3_other)
final = final.fade_override(...blabla...)
私が得るから:
'AudioSegment' object has no attribute 'fade_override'
...オブジェクトから始めたとしても、「唯一の」オブジェクトAudioSegmentCustom
で終わります。AudioSegment
新しく作成されたオブジェクトのタイプを「強制」する方法は何ですか?
必要な場合に備えて:
class AudioSegment(object):
def __add__(self, arg):
if isinstance(arg, AudioSegment):
return self.append(arg, crossfade=0)
else:
return self.apply_gain(arg)