अजगर: एक बीप शोर करना


98

मैं मुझे धमाकेदार आवाज़ देने के लिए कार्यक्रम प्राप्त करने की कोशिश कर रहा हूँ। मैं एक विंडोज़ मशीन पर हूँ। मैंने http://docs.python.org/library/winsound.html को देखा है

लेकिन यकीन नहीं है कि मैं इसे बारकोड स्कैनर के साथ कैसे प्रोग्राम कर सकता हूं।

यहाँ सीरियल बारकोड स्कैनर के लिए मेरा कोड है।

ser = serial.Serial()
ser.baudrate = 9600

#for windows
ser.port = 2 #for COM3

ser.open()
ser.write('hello')
ser.close()

अद्यतन: चूंकि मैं बीप के साथ अपने सहकर्मियों को परेशान कर रहा हूं। क्या मैं हेडफोन के लिए ऑडियो जैक के माध्यम से इसे प्राप्त कर सकता हूं?


4
आप चाहते हैं कि बारकोड स्कैनर शोर करे या विंडोज मशीन जो इससे जुड़ी है?
सेरटन

विंडोज़ मशीन। मुझे लगता है कि बारकोड स्कैनर इसे स्वयं करेगा
मार्क ब्रिघम

10
पुन: "अपडेट": हां, यह एक प्रसिद्ध तथ्य है कि बीप परेशान कर रहे हैं :)
jforberg

2
@CharlieParker क्योंकि जीत ध्वनि खिड़कियों के लिए है। इसके बजाय "\" प्रिंट करें।
no --zɐɹƆ

जवाबों:


149

विंडोज पर, अगर आप कंप्यूटर को बीप साउंड बनाना चाहते हैं:

import winsound
frequency = 2500  # Set Frequency To 2500 Hertz
duration = 1000  # Set Duration To 1000 ms == 1 second
winsound.Beep(frequency, duration)

winsound.Beep()जहाँ भी आप बीप घटित करना चाहते इस्तेमाल किया जा सकता।


12
यह एक साफ है:def annoy(): for i in range(1, 10): winsound.Beep(i * 100, 200)
Skurmedel

9
या def sos(): for i in range(0, 3): winsound.Beep(2000, 100) for i in range(0, 3): winsound.Beep(2000, 400) for i in range(0, 3): winsound.Beep(2000, 100)। मुझे शायद अब काम पर वापस जाना चाहिए: डी
स्कर्मेडल

1
विंडोज़ विंडसाउंड पर। बीप को विंडोज़ साउंड्स पर ले जाया जाता है।
जैकब बाउयर

मैं मैक पर हूँ, यह पाइप रेपो पर नहीं मिल सकता है?
वोलातिल 3

दिलचस्प है, यह मेरे एनाकोंडा वातावरण में मौजूद नहीं है ... क्या यह अजीब है?
चार्ली पार्कर

130

ऐसा करने के लिए क्रॉस-प्लेटफ़ॉर्म तरीका है print('\a')। यह ASCII बेल चरित्र को स्टडआउट के लिए भेज देगा, और उम्मीद है कि एक बीप ('अलर्ट' के लिए) उत्पन्न करेगा। ध्यान दें कि कई आधुनिक टर्मिनल एमुलेटर घंटी पात्रों को अनदेखा करने का विकल्प प्रदान करते हैं।

चूंकि आप विंडोज पर हैं, तो आपको यह सुनकर खुशी होगी कि विंडोज की अपनी (ब्रेस खुद की) बीप एपीआई है , जो आपको मनमानी लंबाई और पिच के बीप भेजने की अनुमति देती है। ध्यान दें कि यह एक विंडोज-केवल समाधान है, इसलिए आपको शायद print('\a')तब तक पसंद करना चाहिए जब तक कि आप वास्तव में हर्ट्ज और मिलीसेकंड के बारे में परवाह न करें।

बीप एपीआई को विनसाउंड मॉड्यूल के माध्यम से एक्सेस किया जाता है: http://docs.python.org/library/winsound.html


1
हालाँकि उन्होंने विशेष रूप से विंडोज के लिए पूछा था, मुझे लगता है कि यह बेहतर समाधान के चारों ओर है, जब तक कि WinSound API OS X के लिए वापस नहीं आएगा। ऑडियो एपीआई बहुत सारे हैं
सेरटन

2
सच कहूँ तो, मैं एक गंभीर प्रोग्रामिंग प्रयास में पूरी तरह से पीसी-स्पीकर बीप्स खेलने से बचूंगा। यदि वह वास्तव में विंडोज पर है, तो उसे संभवतः सिस्टम थीम के डिफ़ॉल्ट "अलर्ट" सिग्नल को खेलने की कोशिश करनी चाहिए। किसी भी भाग्य के साथ, वह संकेत जो भी GUI पैकेज का उपयोग कर रहा है, के माध्यम से सुलभ है।
जेंबर्गबर्ग

1
यदि आप एक कंसोल ऐप में प्रिंट का उपयोग करते हैं, तो हर बार जब आप बीप करते हैं, तो एक नई पंक्ति को रोकने के लिए अंत "" जोड़ने पर विचार करें।
टोनी

2
@jforberg उस के लिए एपीआई है winound.MessageBeep जो MB_ICONASTERISK, MB_ICONEXCLAMATION, MB_ICONHAND, MB_ICONQUESTION और MB_OK ले सकता है।
पीटर लकड़ी

2
यदि आप पायथन 3 का उपयोग कर रहे हैं, तो कोष्ठक का उपयोग करना न भूलें या आपको एक सिंटैक्स त्रुटि मिलेगी। प्रिंट का उपयोग करें ('\' ')
ZorroDeLaArena

27

लिनक्स।

$ apt-get install beep

$ python
>>> os.system("beep -f 555 -l 460")

या

$ beep -f 659 -l 460 -n -f 784 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 880 -l 230 -n -f 659 -l 230 -n -f 587 -l 230 -n -f 659 -l 460 -n -f 988 -l 340 -n -f 659 -l 230 -n -f 659 -l 110 -n -f 1047-l 230 -n -f 988 -l 230 -n -f 784 -l 230 -n -f 659 -l 230 -n -f 988 -l 230 -n -f 1318 -l 230 -n -f 659 -l 110 -n -f 587 -l 230 -n -f 587 -l 110 -n -f 494 -l 230 -n -f 740 -l 230 -n -f 659 -l 460

12
दो कारणों से डाउनवोट किया गया: पहला, जीएनयू / लिनक्स! = डेबियन और एप्ट-गेट सार्वभौमिक नहीं है। दूसरा, आपको os.system का उपयोग नहीं करना चाहिए, इसके बजाय सबप्रोसेस मॉड्यूल का उपयोग करें।
बेन

1
एक लंबा कोड खत्म होने पर एक सरल और सस्ती बीप पाने की कोशिश कर रहे एक लिनक्स उपयोगकर्ता के रूप में, यह सबसे आसान समाधान था। मैं विशेष रूप से छोटे जिंगल से प्यार करता था! नोट इस विकल्प का काम आप कॉल करने के लिए "sudo modprobe pcspkr" और बीप स्थापित हो सकता है कि इससे पहले कि करेगा, के अनुसार askubuntu.com/questions/19906/beep-in-shell-script-not-working
जॉन HABERSTROH

4
os.systemठीक है, विशेष रूप से हार्डकोड मूल्य के साथ, हर कोई वेबसर्वर नहीं लिख रहा है।
cz

टाइपो -f 1047-l, होना चाहिए -f 1047 -l, अंतरिक्ष गायब
bartekbrak

@ पुराना सवाल है, लेकिन fwiw यह इस को कम करने के लिए बहुत कठोर लगता है। यह प्रश्न बिना किसी क्रॉस-प्लेटफॉर्म समाधान वाले क्षेत्र से संबंधित है जैसा कि मैं इसे समझता हूं। 140 पसंद के साथ स्वीकृत उत्तर विंडोज-विशिष्ट है। और आप यह नहीं समझाते हैं कि एक वैध मॉड्यूल "खराब" अभ्यास क्यों है।
भूगर्भिक

17

मैं उसी के लिए खोज रहा था लेकिन लिनक्स शेल के लिए।

विषय मुझे एक उत्तर के लिए लाया, -थैंक-

शायद अधिक पाइथोनिक तरीके:

import os
beep = lambda x: os.system("echo -n '\a';sleep 0.2;" * x)
beep(3)

टिप्पणियाँ :

  • नींद का मूल्य (यहां 0.2), आपके डिफ़ॉल्ट बीप साउंड की लंबाई (सेकंड) पर निर्भर करता है
  • मैं उपयोग करने के लिए choosed os.systemबल्कि तो subprocess.Popen(यह बुरा हो सकता है) सादगी के लिए
  • '-n' के लिए echoकोई अधिक प्रदर्शन नहीं है
  • अंतिम ';' के बाद sleepपरिणामी पाठ अनुक्रम के लिए आवश्यक है (* एक्स)
  • X शब्द पर ssh के माध्यम से भी परीक्षण किया गया

3
पायथन में दोनों echo( print) और के बराबर है sleep, इसलिए यह वास्तव में बाहरी कॉल के माध्यम से जाने के लिए अजगर नहीं है, खासकर जब वे (गैर-पोर्टेबल) यूनिक्स कॉल होते हैं।
एरिक ओ लेबिगॉट

(3) का क्या अर्थ है?
बम्बम्पव

9

एक विंडोज जवाब है, और एक डेबियन जवाब है, इसलिए यहां मैक एक है:

यह मानकर चलता है कि आप यहां केवल एक कस्टमाइज़ करने योग्य चेतावनी ध्वनि बनाने के लिए त्वरित तरीका ढूंढ रहे हैं, और विशेष रूप से पीज़ोइलेक्ट्रिक बीप के लिए जो आपको विंडोज़ के लिए मिलता है:

os.system( "say beep" )

अस्वीकरण: यदि आप अपने बीप कोड पर किसी को हैक करने से चिंतित हैं तो आप मॉड्यूल os.systemको कॉल कर subprocessसकते हैं।

देखें: मैक ओएस एक्स 10.6 में हार्डवेयर बीप ध्वनि कैसे करें


6

क्रॉस-प्लेटफ़ॉर्म तरीका:

import time
import sys
for i in range(1,6):
    sys.stdout.write('\r\a{i}'.format(i=i))
    sys.stdout.flush()
    time.sleep(1)
sys.stdout.write('\n')

5
इसका एकमात्र महत्वपूर्ण भाग हैsys.stdout.write('\a')
jstrieb

2
@jstrieb - यह एक छोटे से स्टैंडअलोन प्रोग्राम है। संपूर्णता में इसका महत्व है।
FooBar167

यह जूपीटर नोटबुक में काम नहीं करता है
यति

4

मैंने उस उद्देश्य के लिए एक पैकेज बनाया है ।

आप इसे इस तरह से उपयोग कर सकते हैं:

from pybeep.pybeep import PyVibrate, PyBeep
PyVibrate().beep()
PyVibrate().beepn(3)
PyBeep().beep()
PyBeep().beepn(3)

यह sox पर निर्भर करता है और केवल python3 का समर्थन करता है।


1
पिप 3 इंस्टॉल करें।
qed

1
बस पता है कि आप sox स्थापित करना होगा। रन: ब्रू इंस्टॉल सोक्स
जैम एम। हर्नांडेज़ Q।

3

pygameकिसी भी प्लेटफ़ॉर्म पर उपयोग करना

उपयोग करने pygameका लाभ यह है कि इसे किसी भी ओएस प्लेटफॉर्म पर काम करने के लिए बनाया जा सकता है। उदाहरण के लिए कोड GNU / Linux के लिए है।

सबसे पहले स्थापित pygameके लिए मॉड्यूल python3के रूप में यहां विस्तार से समझाया

$ sudo pip3 install pygame

pygameमॉड्यूल खेल सकते हैं .wavऔर .oggकिसी भी फाइल स्थान से फाइल। यहाँ एक उदाहरण है:

#!/usr/bin/env python3
import pygame
pygame.mixer.init()
sound = pygame.mixer.Sound('/usr/share/sounds/freedesktop/stereo/phone-incoming-call.oga')
sound.play()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.