Python – как я могу создать интерактивное отображение формы волны аудиофайла в стиле Audacity?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python – как я могу создать интерактивное отображение формы волны аудиофайла в стиле Audacity?

Сообщение Anonymous »

Заголовок, по сути. Я хочу иметь возможность загружать аудиофайл (например, с помощью PyDub), а затем отображать его образцы в виде сигнала. Однако я не хочу, чтобы этот сигнал был статичным — программа должна позволять мне произвольно увеличивать и уменьшать его масштаб. Кроме того, я хочу включить функционально базовое взаимодействие, которое позволит мне создать своего рода «маркер», который я смогу разместить в произвольной части звуковой дорожки, переместить ее ( перетаскивая его вокруг оси времени) и удаляйте по мере необходимости.
Конечно, эта программа требует некоторого дополнительного графического интерфейса, поэтому изначально я выбрал TkInter, поскольку включение Canvas казалось подходящим способом решить проблему рисования формы волны. Однако с этой опцией, похоже, есть некоторые проблемы:
  • Когда уровень масштабирования достигает отдельных сэмплов (например, масштабирование до нескольких миллисекунд дорожки ), их отображение должно отличаться от отображения при сжатии нескольких секунд/минут — точно так же, как в Audacity. Другими словами, небольшое количество выборок должно быть составлено другим способом. Поэтому функция Canvas .zoom(...) не подходит.
  • При масштабировании Если длинный аудиофайл (например, длительностью в час) составляет всего несколько миллисекунд, то абсолютно неэффективно визуализировать весь оставшийся фрагмент семпла. Поэтому я подумал о создании «статического» холста, который бы отображал только видимую часть звука. С помощью простой математики мне удалось это реализовать, и я мог прокручивать и масштабировать изображение по своему желанию. Проблема, однако, заключается в том, что по сути приходится перерисовывать холст каждый раз, когда я перемещаю полосу прокрутки или увеличиваю или уменьшаю масштаб. Судя по тому, что я читал, методы TkInter, такие как create_line(...), не являются «нарисовать и забыть» — вместо этого они каким-то образом «хранят» эти объекты, и при таком подходе они ужасно медленны и засоряют. память.
  • Подход «перерисовки», кажется, трудно сочетать с взаимодействием «маркера», о котором я упоминал ранее.
Я в тупике. Буду очень признателен за любые предложения по реализации этой функции. Достижима ли эта цель с помощью TkInter, или у вас есть другие предложения по библиотекам?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ay-of-an-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу создать интерактивное отображение формы волны аудиофайла в стиле Audacity?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Запишите/прослушайте звук определенного окна/приложения, используя Python/Javascript, например Audacity или Obs.
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как экспортировать аудио из нескольких проектов Audacity с помощью Python?
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Запуск Audacity From Python и загрузка нескольких звуков
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Запуск Audacity From Python и загрузка нескольких звуков
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»