Как я могу воспроизвести звук (это будет как звук в 1 секунду) из скрипта Python?
Было бы лучше, если бы он не зависел от платформы, но для начала он должен работать на Mac.
Я знаю, что могу просто выполнить afplay file.mp3
команду из Python, но можно ли сделать это в чистом Python? Мне также было бы лучше, если бы он не полагался на внешние библиотеки.
Ответы:
Вы можете найти информацию об аудио Python здесь: http://wiki.python.org/moin/Audio/
Не похоже, что он может воспроизводить файлы .mp3 без внешних библиотек. Вы можете либо преобразовать файл .mp3 в .wav или другой формат, либо использовать такую библиотеку, как PyMedia .
источник
.wav
файл?Лучше всего, вероятно, использовать pygame / SDL . Это внешняя библиотека, но она имеет отличную поддержку на разных платформах.
Вы можете найти более конкретную документацию о поддержке аудиомикшера в документации pygame.mixer.music.
источник
time.sleep(5)
в конце, и это сработало. Python 3.6 для Windows 8.1Взгляните на Simpleaudio , относительно недавнюю и легкую библиотеку для этой цели:
Затем:
Обязательно используйте несжатые 16-битные файлы PCM.
источник
Попробуйте использовать playsound, который представляет собой кроссплатформенный однофункциональный модуль на чистом Python без каких-либо зависимостей для воспроизведения звуков.
Установить через pip:
После установки вы можете использовать его так:
источник
playsound
. Я только что протестировал здесь пару решений, и это сработало для меня проще всего. К сожалениюpygame
, во время краткого теста решение не сработало.В pydub мы недавно решили использовать ffplay (через подпроцесс) из набора инструментов ffmpeg, который внутренне использует SDL.
Он работает для наших целей - в основном просто для упрощения тестирования результатов кода pydub в интерактивном режиме - но у него есть свои недостатки, например, появление новой программы в доке на Mac.
Я связал реализацию выше, но следует упрощенная версия:
-nodisp
Флаг останавливается ffplay показ нового окна, и-autoexit
флаг вызывает ffplay к выходу и возвращать код состояния , когда аудиофайл окончания воспроизведения.edit : pydub теперь использует pyaudio для воспроизведения, когда он установлен, и возвращается к ffplay, чтобы избежать недостатков, о которых я упоминал. Ссылка выше также показывает эту реализацию.
источник
Извините за поздний ответ, но я думаю, что это хорошее место для рекламы моей библиотеки ...
AFAIK, в стандартной библиотеке есть только один модуль для воспроизведения аудио: ossaudiodev . К сожалению, это работает только в Linux и FreeBSD.
ОБНОВЛЕНИЕ: также есть выигрыш , но, очевидно, это также зависит от платформы.
Для чего-то более независимого от платформы вам понадобится внешняя библиотека.
Я рекомендую модуль звукового устройства (но будьте осторожны, я автор).
Пакет включает предварительно скомпилированную библиотеку PortAudio для Mac OS X и Windows, и ее можно легко установить с помощью:
Он может воспроизводить звук из массивов NumPy, но также может использовать простые буферы Python (если NumPy недоступен).
Для воспроизведения массива NumPy это все, что вам нужно (при условии, что аудиоданные имеют частоту дискретизации 44100 Гц):
Подробнее читайте в документации .
Он не может читать / записывать звуковые файлы, для этого вам понадобится отдельная библиотека.
источник
Вы можете увидеть это: http://www.speech.kth.se/snack/
источник
Ответ Аарона кажется примерно в 10 раз сложнее, чем необходимо. Просто сделайте это, если вам нужен только ответ, работающий в OS X:
Одно дело ... это немедленно возвращается. Таким образом, вы можете также сделать это, если хотите, чтобы вызов блокировался до тех пор, пока звук не перестанет воспроизводиться.
Изменить: я взял эту функцию и объединил ее с вариантами для Windows и Linux. В результате получился кроссплатформенный модуль на чистом питоне без зависимостей, который называется playsound . Я загрузил его на pypi.
Затем запустите его так:
Файлы MP3 также работают в OS X. WAV должен работать на всех платформах. Я не знаю, какие другие комбинации платформы / формата файла работают или не работают - я их еще не пробовал.
источник
playsound
модуль, который я написал? Я не тестировал это ни на чем новее, чем Python 2.7.11 ... Я, конечно, могу попытаться исправить это на 3.5 ...Это самый простой и лучший из найденных. Он поддерживает Linux / pulseaudio, Mac / coreaudio и Windows / WASAPI.
См. Https://github.com/bastibe/PySoundFile и https://github.com/bastibe/SoundCard для множества других супер-полезных функций.
источник
Можно воспроизводить звук в OS X без каких-либо сторонних библиотек, используя аналог следующего кода. Необработанные аудиоданные можно вводить с помощью wave_wave.writeframes. Этот код извлекает 4 секунды аудио из входного файла.
источник
Попробуйте PySoundCard, использующий для воспроизведения PortAudio, доступный на многих платформах. Кроме того, он распознает «профессиональные» звуковые устройства с большим количеством каналов.
Вот небольшой пример из Readme:
источник
Также в OSX - из SO , используя команду OSX afplay :
ОБНОВЛЕНИЕ: все это указывает, как делать то, чего OP хотел избежать в первую очередь. Думаю, я разместил это здесь, потому что OP хотел избежать именно той информации, которую я искал. Упс.
источник
Pypi имеет список модулей для Python в музыке. Мне больше всего нравится jython, потому что в нем больше ресурсов и библиотек для музыки. В качестве примера кода для воспроизведения одной заметки из учебника :
источник
Mac OS Я пробовал много кодов, но у меня это работает
источник
Установите
playsound
пакет, используя:Использование:
источник
источник
Чтобы воспроизвести звук уведомления с помощью python, вызовите музыкальный проигрыватель, например vlc. VLC побудил меня использовать его версию командной строки, cvlc, вместо этого.
Для этого требуется, чтобы на устройстве был предварительно установлен vlc. Протестировано в Linux (Ubuntu 16.04 LTS); Запуск Python 3.5.
источник
Попробуйте звуковое устройство
Если у вас нет модуля, введите его
pip install sounddevice
в свой терминал.Затем в предпочитаемом вами скрипте Python (я использую Juypter) введите
sd.play(audio, sr)
будет воспроизводить то, что вы хотите, через PythonЛучший способ получить нужный звук и частоту дискретизации - использовать модуль librosa. Введите это в терминал, если у вас нет модуля librosa.
Независимо от того, какой файл wav вы хотите воспроизвести, просто убедитесь, что он находится в том же каталоге, что и ваш скрипт Python. Это должно позволить вам воспроизводить желаемый файл WAV через Python.
Привет, Чарли
PS
Как только аудио является объектом данных "librosa", Python видит его как массив numpy. В качестве эксперимента попробуйте воспроизвести длинный (попробуйте 20 000 точек данных) случайный массив numpy. Python должен воспроизводить это как белый шум. Модуль sounddevice также воспроизводит множество массивов и списков.
источник
В записной книжке Colab вы можете:
источник
Недавно я заставил свой музыкальный проигрыватель поддерживать все аудиофайлы локально. Я сделал это, выяснив, как использовать модуль vlc python, а также файлы dll VLC. Вы можете проверить это: https://github.com/elibroftw/music-caster/blob/master/audio_player.py
источник
Если вы работаете в OSX, вы можете использовать модуль «os» или «подпроцесс» и т. Д., Чтобы вызвать команду OSX «play». Из оболочки OSX это выглядит как
играть "bah.wav"
На моей машине он начинает играть примерно через полсекунды.
источник
Просто вы можете сделать это с помощью cvlc - я сделал это так:
/home/maulo/selfProject/task.mp3. Здесь находится мой mp3-файл. с помощью "--play-and-exit" вы сможете снова воспроизвести звук, не прерывая процесс vlc.
источник