Воспроизведение аудио с Python - PullRequest
97 голосов
/ 04 ноября 2008

Как я могу воспроизвести аудио (это будет похоже на 1-секундный звук) из скрипта Python?

Было бы лучше, если бы он был независимым от платформы, но сначала он должен работать на Mac.

Я знаю, что мог просто выполнить команду afplay file.mp3 из Python, но возможно ли это сделать в сыром Python? Мне также было бы лучше, если бы он не полагался на внешние библиотеки.

Ответы [ 18 ]

2 голосов
/ 02 января 2016

Можно воспроизводить аудио в OS X без каких-либо сторонних библиотек, используя аналог следующего кода. Необработанные аудиоданные могут быть введены с помощью wave_wave.writeframes. Этот код извлекает 4 секунды аудио из входного файла.

import wave
import io
from AppKit import NSSound


wave_output = io.BytesIO()
wave_shell = wave.open(wave_output, mode="wb")
file_path = 'SINE.WAV'
input_audio = wave.open(file_path)
input_audio_frames = input_audio.readframes(input_audio.getnframes())

wave_shell.setnchannels(input_audio.getnchannels())
wave_shell.setsampwidth(input_audio.getsampwidth())
wave_shell.setframerate(input_audio.getframerate())

seconds_multiplier = input_audio.getnchannels() * input_audio.getsampwidth() * input_audio.getframerate()

wave_shell.writeframes(input_audio_frames[second_multiplier:second_multiplier*5])

wave_shell.close()

wave_output.seek(0)
wave_data = wave_output.read()
audio_stream = NSSound.alloc()
audio_stream.initWithData_(wave_data)
audio_stream.play()
1 голос
/ 16 февраля 2018

Pypi имеет список модулей для python в музыке. Моим любимым будет jython , потому что у него больше ресурсов и библиотек для музыки В качестве примера кода для воспроизведения одной ноты из учебника :

# playNote.py 
# Demonstrates how to play a single note.

from music import *   # import music library
note = Note(C4, HN)   # create a middle C half note 
Play.midi(note)       # and play it!
1 голос
/ 06 октября 2017

Это самый простой и лучший IV'e найден. Он поддерживает Linux / pulseaudio, Mac / coreaudio и Windows / WASAPI.

import soundfile as sf
import soundcard as sc

default_speaker = sc.default_speaker()
samples, samplerate = sf.read('bell.wav')

default_speaker.play(samples, samplerate=samplerate)

См. https://github.com/bastibe/PySoundFile и https://github.com/bastibe/SoundCard для тонны других супер-полезных функций.

0 голосов
/ 12 ноября 2016
Поместите это в начало написанного вами скрипта Python:
import subprocess
Если файл wav находится в каталоге скрипта python:
f = './mySound.wav'
subprocess.Popen(['aplay','-q',f)
Если файл wav НЕ находится в каталоге скрипта python:
f = 'mySound.wav'
subprocess.Popen(['aplay','-q', 'wav/' + f)
Если вы хотите узнать больше об aplay:
man aplay
0 голосов
/ 27 марта 2014

Если вы используете OSX, вы можете использовать модуль "os" или "subprocess" и т. Д. Для вызова команды OSX "play". Из оболочки OSX это выглядит как

пьеса "bah.wav"

На моей машине он начинает воспроизводиться через полсекунды.

0 голосов
/ 22 февраля 2018

Чтобы воспроизвести звук уведомления с помощью python, вызовите музыкальный проигрыватель, например, vlc. VLC предложил мне использовать его версию командной строки, cvlc.

from subprocess import call
call(["cvlc", "--play-and-exit", "myNotificationTone.mp3"])

Требуется предварительная установка vlc на устройстве. Проверено на Linux (Ubuntu 16.04 LTS); Запуск Python 3.5.

0 голосов
/ 20 ноября 2018

Mac OS Я перепробовал много кодов, но на мне это работает

import pygame
import time
pygame.mixer.init()
pygame.init()
pygame.mixer.music.load('fire alarm sound.mp3') *On my project folder*
i = 0
while i<10:
    pygame.mixer.music.play(loops=10, start=0.0)
    time.sleep(10)*to protect from closing*
    pygame.mixer.music.set_volume(10)
    i = i + 1
0 голосов
/ 20 марта 2016

Просто вы можете сделать это с помощью cvlc- Я сделал это так:

import os
os.popen2("cvlc /home/maulo/selfProject/task.mp3 --play-and-exit")

/ дома / maulo / selfProject / task.mp3. Это местоположение моего mp3 файла. с помощью «--play-and-exit» вы сможете снова воспроизводить звук, не прерывая процесс vlc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...