30

Windowsでスピーカーからビープ音を鳴らしたい場合、Python2は明らかに便利な機能を提供しますwinsound.Beep()。この関数の優れた点は、ビープ音の正確な頻度と持続時間を指定する引数を取ることです。これは、私がWindowsを使用しないことを除いて、まさに私がやりたいことです。それで...

winsound.Beep()forLinuxとに最も近いものは何OSXですか?依存関係をできるだけ少なくしますか?

サウンドファイルを再生するのではなく、スピーカーから直接ビープ音を鳴らしたいので注意してください。また、ビープ音の頻度と持続時間を制御できる必要があるので、制御できcurses.beep()ませprint '\a'ん。最後に、それがPyGame広範なサウンド機能を提供することを認識していますが、PyGameの他の機能を必要としないことを考えると、ハンマーを使用してナットを割るようなものになります(とにかく、依存関係を排除しようとしています可能な限り)。

4

5 に答える 5

13

winsound は Windows 専用で、"/a" を印刷する以外にこれを行うクロスプラットフォームの方法が見つかりませんでした。ただし、これで頻度と期間を設定することはできません。

ただし、 os.system コマンドを試して、システム コマンドbeepで同じことを行うことができます。プラットフォームに依存しない方法で関数 playsound を定義するスニペットを次に示します。

try:
    import winsound
except ImportError:
    import os
    def playsound(frequency,duration):
        #apt-get install beep
        os.system('beep -f %s -l %s' % (frequency,duration))
else:
    def playsound(frequency,duration):
        winsound.Beep(frequency,duration)

詳しくはこちらのブログをご覧ください

編集: beep コマンドを実行するには、Linux に beep パッケージをインストールする必要があります。コマンドを入力することでインストールできます

sudo apt-get install beep
于 2012-09-10T15:58:00.363 に答える
11

私はここで潜在的な解決策を見つけました:http: //bytes.com/topic/python/answers/25217-beeping-under-linux

/ dev/audioに直接書き込む必要があります。それがどれほどポータブルであるか、あるいはそれがまったく機能するかどうかはわかりません-私はLinuxマシンのATMを使用していません。

def beep(frequency, amplitude, duration):
    sample = 8000
    half_period = int(sample/frequency/2)
    beep = chr(amplitude)*half_period+chr(0)*half_period
    beep *= int(duration*frequency)
    audio = file('/dev/audio', 'wb')
    audio.write(beep)
    audio.close()
于 2012-09-10T15:25:57.327 に答える