Linux के अंतर्गत Mathematica में कोई आवाज़ नहीं है


10

मेरे पास मैथेमेटिका में घटनाओं का एक विशाल समूह है, जिस पर मुझे प्रतिक्रिया करने की आवश्यकता है, और यह हमेशा इसके लिए व्यावहारिक नहीं है, खासकर जब से घटनाओं को समय पर बेतरतीब ढंग से वितरित किया जाता है।
इसलिए मैं इस घटना की जाँच करने के लिए मुझे याद दिलाने के लिए एक सरल ध्वनि जोड़ना चाहता था। मैं उपयोग करना चाहता था, Beep[]लेकिन मुझे कोई परिणाम नहीं मिला, वास्तव में, मुझे अब तक यह नहीं पता था कि गणितज्ञ कोई आवाज़ नहीं कर रहा है।

मैं डेबियन निचोड़ स्थिर का उपयोग करता हूं और ध्वनि का उपयोग करने वाले किसी भी अन्य एप्लिकेशन के साथ कोई परेशानी नहीं है।

यह आपके सिस्टम के साउंड सेट के आधार पर मैथमेटिका के सभी हालिया संस्करणों (7, 8 और 9) और संभवतः पुराने संस्करणों को प्रभावित करता है।


मम्मा में यह एक समस्या रही है जब से उन्होंने संस्करण 6 में ध्वनि कमांड जोड़े हैं। मुझे याद है कि इसे उस समय ठीक करना था, लेकिन हाल के संस्करणों में परेशान नहीं किया। यहां प्रलेखन का प्रयास करें
साइमन

क्या इस सवाल को सुपरसुसर में स्थानांतरित कर दिया जाना चाहिए?
साइमन

दुर्भाग्य से मुझे अभी भी कोई आवाज़ नहीं मिल रही है।

मैं Stackoverflow पर मूल पोस्टर हूँ। मुझे इस साइट के बारे में बताने के लिए धन्यवाद, मुझे नहीं पता था कि यह अस्तित्व में है। यह शानदार है मुझे इसका अच्छा उपयोग मिल सकता है।
enedene

इसे भी देखें: unix.stackexchange.com/q/15191/2842
साइमन

जवाबों:


10

जहां तक ​​मुझे पता है, Mathematica ने वास्तव में लिनक्स में ध्वनि का समर्थन नहीं किया है। कमांड Playको संस्करण 3 में पेश किया गया था, और पूरे साउंड सिस्टम को संस्करण 6 में ओवरहॉल किया गया था। यदि आप comp.soft-sys.math.mathematica खोजते हैं, तो आपको संस्करण 3 में सभी तरह से वापस जाने वाले प्रश्न मिलेंगे। संस्करण 6 में, आज्ञा दी EmitSoundगई। यह अब अधिकांश मैथेमेटिका साउंड जेनरेशन को रेखांकित करता है, लेकिन मैं इसे लिनक्स के लिए ठीक करने / हैक करने का एक त्वरित तरीका नहीं ढूंढ सका, क्योंकि EmitSoundध्वनि को दृश्यपटल से गुजरने से पहले कुछ प्रीप्रोसेसिंग (यह पता लगाया जाता है कि किस प्रकार की वस्तुएं दी गई हैं)। मूल्यांकन करना।

अधिकांश लिनक्स इंस्टाल में इस्तेमाल होने वाला डिफ़ॉल्ट साउंड ड्राइवर / एपीआई एएलएसए ( विकी ) है। यह 2002 में लिनक्स कर्नेल 2.6 में डिफ़ॉल्ट हो गया और ओएसएस को "मूल्यह्रास" के रूप में चिह्नित किया गया था (हालांकि ओएसएस अभी भी सक्रिय विकास के अधीन है)। कई लिनक्स वितरण अब PulseAudio का उपयोग करते हैं जो अंतर्निहित ALSA ध्वनि के शीर्ष पर बैठता है। (लिनक्स ध्वनि की बेहतर समझ वाला कोई भी व्यक्ति इसे संपादित करने के लिए स्वतंत्र महसूस करना चाहिए!)

Mathematica ने संस्करण 3 (1996) में ध्वनि पेश की और इस प्रकार अपने * nix वेरिएंट के लिए OSS का उपयोग किया। ओएसएस के लगभग किसी भी वैरिएंट में डिफ़ॉल्ट नहीं होने के बावजूद यह अभी भी मामला है। यह जानने से हमें एक संभावित समाधान मिलता है: OSS इम्यूलेशन लेयर (उदाहरण के लिए, http://wiki.debian.org/SoundFAQ ) का उपयोग करें।

सबसे सरल है कि यूजरस्पेस मोड एमुलेशन का उपयोग करें और मैथेमेटिका के माध्यम से चलाएं aoss

aoss mathematica

या पल्सएडियो समकक्ष

padsp mathematica

इन दोनों के साथ समस्या यह है कि यह केवल मिडी ध्वनियों के साथ काम करता है, न कि नमूना ध्वनियों के साथ। कम से कम यह मेरे उबंटू 10.10 सिस्टम और स्कॉट क्रूगर ( WRI तकनीकी सहायता टीम का) के लिनक्स सिस्टम पर सच है । इस मुद्दे पर एक बग रिपोर्ट दायर की गई है।

वैकल्पिक रूप से, आप अपने कर्नेल में OSS संगतता लोड कर सकते हैं

apt-get install alsa-oss
modprobe snd_pcm_oss
modprobe snd_mixer_oss

और आप उन्हें जोड़ने snd_pcm_ossऔर बूट snd_mixer_ossकरने के /etc/modulesलिए लोड कर सकते हैं । ये मॉड्यूल Ubuntu 10.10 में आसानी से उपलब्ध नहीं हैं क्योंकि उन्होंने पीछे की संगतता को हटाने का फैसला किया है। मैं अपनी कर्नेल को फिर से देखे बिना उपरोक्त परीक्षण नहीं कर सकता ...


चूँकि उपरोक्त OSS एमुलेशन वर्तमान में पूरी तरह से काम नहीं कर रहा है, यहाँ कुछ क्विक वर्क-अराउंड्स के आधार पर मैंने जो कुछ चर्चाएँ देखीं (जैसे, a b c ) और डिफ़ॉल्ट ALSA कमांड का उपयोग करने के लिए फिर से लिखा।

नमूना ध्वनि के लिए, उपयोग करें aplay:

ALSASound[snd_, "WAV"] := Module[{playCmd = "aplay", soundFileName},
  soundFileName = "/dev/shm/" <> ToString[Unique["MmaSound"]] <> ".wav";
  playCmd = playCmd <> " " <> soundFileName;
  Export[soundFileName, snd, "WAV"];
  Run["(" <> playCmd <> ";" <> "/bin/rm -f " <> soundFileName <> ")&"];]

जैसे, ALSASound[Play[Sin[1000 t^2], {t, 0, 1}], "WAV"]
आपको Exportउपयुक्त /dev/snd/डिवाइस पर भी सीधे सक्षम होना चाहिए ... लेकिन मुझे वह काम नहीं मिला।

midiउपयोग के लिए aplaymidi। यह काम करने के लिए आपको किसी प्रकार के सॉफ़्टवेयर / हार्डवेयर मिडी सिंथेट को स्थापित करने की आवश्यकता है। मेरा timidityपोर्ट 128 पर चल रहा है ( मदद के लिए यहां देखें )

ALSASound[snd_, "MIDI"] := 
 Module[{playCmd = "aplaymidi", port = "128:0", soundFileName},
  soundFileName = "/dev/shm/" <> ToString[Unique["MmaSound"]] <> ".mid";
  playCmd = playCmd <> " -p " <> port <> " " <> soundFileName;
  Export[soundFileName, snd, "MIDI"];
  Run["(" <> playCmd <> ";" <> "/bin/rm -f " <> soundFileName <> ")&"];]

जैसे, ALSASound[Sound[SoundNote /@ CharacterRange["A", "G"]], "MIDI"]

अब आप ALSASoundकिसी भी ध्वनि ऑब्जेक्ट के चारों ओर उपयुक्त कमांड लपेट सकते हैं । तुम भी Playउपयोग करने के लिए फिर से परिभाषित कर सकते हैं ALSASound:

SetOptions[Play, DisplayFunction -> ((ALSASound[#, "WAV"]; #) &)];

यह अनिवार्य रूप से $ SoundDisplayFunction की स्थापना के बराबर है , जैसा कि इंटरनेट के आसपास कई चर्चाओं द्वारा अनुशंसित है। यह विकल्प सेटिंग ध्वनि को चलाएगा, फिर सामान्य ग्राफिक्स का उत्पादन करेगा।

Play[Sin[1000 t^2], {t, 0, 1}]

खेल

लेकिन स्टार्ट / स्टॉप बटन काम नहीं करेंगे, क्योंकि वे आधारित हैं EmitSound

एक साधारण Beep[]समकक्ष बनाने के लिए , प्रयास करें

ALSABeep[] := Play[Sin[5000 t], {t, 0, .1}, 
                   DisplayFunction -> (ALSASound[#, "WAV"]&)]

अंत में, यदि आप त्योहार टेक्स्ट-टू-स्पीच (या कोई अन्य टेक्स्ट-टू-स्पीच प्रोग्राम) स्थापित करते हैं, तो आप मैथेमेटिका Speakकार्यक्षमता को प्रतिस्थापित कर सकते हैं , जैसे।

FestivalSpeak[str_String] := (Run["(echo \"" <> str <> "\" | esddsp festival --tts)&"];)
FestivalSpeak[expr_] := FestivalSpeak[SpokenString[expr]]

साइमन, इस जवाब ने चाल चली, बहुत-बहुत धन्यवाद।
enedene

Btw, क्या किसी को पता है कि क्या गणितज्ञ भविष्य में लिनक्स पर ध्वनि का समर्थन करने की योजना बना रहे हैं? मुझे लगता है कि वे विशिष्ट सॉफ़्टवेयर हैं जहां लिनक्स पर इसका उपयोग करने वाले लोगों का प्रतिशत अधिकांश अन्य सॉफ़्टवेयरों की तुलना में बहुत अधिक है।
enedene

@enedene: मैंने आज WRI समर्थन के उस प्रश्न को पूछा। उम्मीद है कि अगले कुछ दिनों में हमें इसका जवाब मिल जाएगा ...
साइमन

धन्यवाद साइमन, आप मददगार रहे हैं। यदि आपको कोई उत्तर मिलता है, तो कृपया इसे यहां पोस्ट करें या लिंक दें।
enedene

@enedene: मुझे WRI समर्थन से एक उपयोगी उत्तर मिला। संपादित देखें!
साइमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.