Плохое качество после нескольких эффектов затухания с помощью Pydub

Я хотел бы сгенерировать mp3-файл тренировки с музыкой в ​​фоновом режиме и инструкциями в какой-то момент времени (например, "дави сильнее", "делай еще одно повторение!")

Я генерирую инструкцию с pico2wave и собираю их с помощью pydub.

Я сделаю это:

for timing,phrase in phrases.items():
        fileToAdd = pydub.AudioSegment.from_file(rep+"/"+str(timing)+".wav")
        finalFile = finalFile.fade(to_gain=-35, start=(timing*1000)-500, duration=500) # on diminue la chanson, une demi seconde avant
        finalFile = finalFile.fade(to_gain=+35, start=(timing*1000)+len(fileToAdd), duration=500) 
        fichierFinal = fichierFinal.overlay(fileToAdd,position=timing*1000) 

Файл результатов имеет ОЧЕНЬ плохое качество. Я пытаюсь убрать "эффект затухания", и качество хорошее (но я не очень хорошо слышу "инструкции")

Как я могу это изменить? Могу ли я легко сделать эффект затухания и затухания?

Спасибо,

С Уважением,

Axel

1 ответ

Решение

Я думаю, что проблема в том, что вы уменьшаете звук, а затем усиливаете его (поэтому вы теряете 35 дБ динамического диапазона каждый раз, когда ослабляете и затем усиливаете звук).

Я думаю, что лучшим решением было бы разделить звук и уменьшить только те части, которые вам нужны (без каких-либо операций повышения).

Операцию, которую вы здесь делаете, иногда называют "приглушением", поэтому я буду использовать это имя ниже:

def duck(sound, position, duration, gain=-15.0, fade_duration=500):
    """
    sound - an AudioSegment object
    position - how many milliseconds into the sound the duck should 
        begin (this is where overlaid audio could begin, the fade down
        will happen before this point)
    duration - how long should the sound stay quiet (milliseconds)
    gain - how much quieter should the sound get (in dB)
    fade_duration - how long sound the fades last (in milliseconds)
    """

    # this part is from the beginning until the end of the ducked section
    first_part = sound[:position+duration]
    first_part = first_part.fade(to_gain=gain, end=position, duration=fade_duration)

    # this part begins where the fade_up happens (will just fade in)
    second_part = sound[position+duration:]
    second_part = second_part.fade(from_gain=gain, start=0, duration=fade_duration)

    return first_part + second_part


for timing, phrase in phrases.items():
    fileToAdd = pydub.AudioSegment.from_file(rep+"/"+str(timing)+".wav")

    finalFile = duck(finalFile, position=timing*1000, duration=len(fileToAdd))

    finalFile = finalFile.overlay(fileToAdd, position=timing*1000) 

После некоторого тестирования 35 дБ, вероятно, больше, чем вы хотите. 15дБ звучало довольно хорошо для моих ушей:)

Другие вопросы по тегам