Сведения о вопросе

PASHA

10:11, 17th August, 2020

Теги

python   macos   audio   terminal    

Python звук ("Bell")

Просмотров: 691   Ответов: 5

Я бы хотел, чтобы программа python предупредила меня, когда она завершит свою задачу, издав звуковой сигнал. В настоящее время я использую import os , а затем использую речевую программу командной строки, чтобы сказать "Process complete." я бы предпочел, чтобы это было простое "bell."

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

Я тоже пробовал

print('\a')

но это не сработало.

Я использую Mac, Если вы не можете сказать по моему комментарию Cocoa , так что это может помочь.



  Сведения об ответе

DO__IT

23:24, 2nd August, 2020

А вы пробовали :

import sys
sys.stdout.write('\a')
sys.stdout.flush()

Это работает для меня здесь, на Mac OS 10.5

На самом деле, я думаю, что ваша оригинальная попытка также работает с небольшой модификацией:

print('\a')

(Вам просто нужны одинарные кавычки вокруг последовательности символов).


  Сведения об ответе

padenie

23:47, 7th August, 2020

Если у вас установлен PyObjC (The Python - Objective-C bridge) или работает на OS X 10.5's system python (которая поставляется с PyObjC), вы можете сделать

from AppKit import NSBeep
NSBeep()

чтобы воспроизвести системное оповещение.


  Сведения об ответе

darknet

03:21, 25th August, 2020

Я попробовал микшер из модуля pygame, и он отлично работает. Сначала установите модуль:

$ sudo apt-get install python-pygame

Тогда в программе напишите это:

from pygame import mixer
mixer.init() #you must initialize the mixer
alert=mixer.Sound('bell.wav')
alert.play()

С pygame у вас есть много вариантов настройки, с которыми вы можете дополнительно поэкспериментировать.


  Сведения об ответе

DINO

15:55, 9th August, 2020

Мне пришлось отключить опцию "Silence terminal bell" в моем активном профиле Terminal в iTerm для работы print('\a') . Казалось, что он прекрасно работает по умолчанию в Terminal.

Вы также можете использовать Mac-модуль Carbon.Snd для воспроизведения системного звукового сигнала:

>>> import Carbon.Snd
>>> Carbon.Snd.SysBeep(1)
>>> 

Углеродные модули не имеют никакой документации, поэтому мне пришлось использовать help(Carbon.Snd) , чтобы увидеть, какие функции были доступны. Похоже, что это прямой интерфейс на Carbon, так что документы по Apple Developer Connection, вероятно, помогут.


  Сведения об ответе

SILA

10:57, 2nd August, 2020

Отталкиваясь от ответа Барри Уорка... NSBeep() из AppKit работает нормально, но также делает значок terminal/app на панели задач скачкообразным. Несколько дополнительных строк с NSSound() позволяет избежать этого и дает возможность использовать другой звук:

from AppKit import NSSound
#prepare sound:
sound = NSSound.alloc()
sound.initWithContentsOfFile_byReference_('/System/Library/Sounds/Ping.aiff', True)
#rewind and play whenever you need it:
sound.stop() #rewind
sound.play()

Стандартные звуковые файлы можно найти через командную строку locate /System/Library/Sounds/*.aiff файл, используемый NSBeep() , кажется, '/System/Library/Sounds/Funk.aiff'


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться