summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2014-09-19 16:22:27 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2014-09-26 13:34:47 +0200
commit3970fabe28e60d5e944de9cdeffe5ff6ab0e55ea (patch)
treef64f6c2d46968322d4f82d6a6d2be7f7fc9576a1 /client
parentd71c77460f8eb2564189b4695f4d1187beb8a8b2 (diff)
downloadjasper-client-3970fabe28e60d5e944de9cdeffe5ff6ab0e55ea.tar.gz
jasper-client-3970fabe28e60d5e944de9cdeffe5ff6ab0e55ea.zip
Change AbstractMP3Speaker.play_mp3() to use AbstractSpeaker.play()
Diffstat (limited to 'client')
-rw-r--r--client/speaker.py30
1 files changed, 13 insertions, 17 deletions
diff --git a/client/speaker.py b/client/speaker.py
index 54a039f..d89313f 100644
--- a/client/speaker.py
+++ b/client/speaker.py
@@ -54,23 +54,19 @@ class AbstractMp3Speaker(AbstractSpeaker):
def is_available(cls):
return (super(AbstractMp3Speaker, cls).is_available() and 'mad' in sys.modules.keys())
- def play_mp3(cls, filename):
- f = mad.MadFile(filename)
- p = pyaudio.PyAudio()
- # open stream
- stream = p.open(format=p.get_format_from_width(pyaudio.paInt32),
- channels=2,
- rate=f.samplerate(),
- output=True)
-
- data = f.read()
- while data:
- stream.write(data)
- data = f.read()
-
- stream.stop_stream()
- stream.close()
- p.terminate()
+ def play_mp3(self, filename):
+ mf = mad.MadFile(filename)
+ with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as f:
+ wav = wave.open(f, mode='wb')
+ wav.setframerate(mf.samplerate())
+ wav.setnchannels(1 if mf.mode() == mad.MODE_SINGLE_CHANNEL else 2)
+ wav.setsampwidth(pyaudio.get_sample_size(pyaudio.paInt32))
+ frame = mf.read()
+ while frame is not None:
+ wav.writeframes(frame)
+ frame = mf.read()
+ wav.close()
+ self.play(f.name)
class eSpeakSpeaker(AbstractSpeaker):
"""