zodiac.streams.media_stream

 1#  # # <!-- // /*  SPDX-License-Identifier: MPL-2.0*/ -->
 2#  # # <!-- // /*  d a r k s h a p e s */ -->
 3
 4import sounddevice as sd
 5from nnll.monitor.file import dbuq
 6
 7
 8class AudioMachine:
 9    audio_stream = [0]
10    frequency = 0
11    duration: float = 3.0
12    precision = duration * frequency
13    sample_length = 0.0
14
15
16async def record_audio(self, frequency: int = 16000) -> None:
17    """Get audio from mic"""
18    self.frequency = frequency
19    self.audio_stream = [0]
20    self.audio_stream = sd.rec(int(self.precision), samplerate=self.frequency, channels=1)
21    sd.wait()
22    self.sample_length = str(float(len(self.audio_stream) / frequency))
23    return self.audio_stream
24
25
26async def play_audio(self) -> None:
27    """Playback audio recordings"""
28    try:
29        sd.play(self.audio_stream, samplerate=self.frequency)
30        sd.wait()
31    except TypeError as error_log:
32        dbuq(error_log)
33
34
35async def erase_audio(self) -> None:
36    """Clear audio graph and recording"""
37    self.audio_stream = [0]
38    self.frequency = 0.0
39    self.sample_length = 0.0
class AudioMachine:
 9class AudioMachine:
10    audio_stream = [0]
11    frequency = 0
12    duration: float = 3.0
13    precision = duration * frequency
14    sample_length = 0.0
audio_stream = [0]
frequency = 0
duration: float = 3.0
precision = 0.0
sample_length = 0.0
async def record_audio(self, frequency: int = 16000) -> None:
17async def record_audio(self, frequency: int = 16000) -> None:
18    """Get audio from mic"""
19    self.frequency = frequency
20    self.audio_stream = [0]
21    self.audio_stream = sd.rec(int(self.precision), samplerate=self.frequency, channels=1)
22    sd.wait()
23    self.sample_length = str(float(len(self.audio_stream) / frequency))
24    return self.audio_stream

Get audio from mic

async def play_audio(self) -> None:
27async def play_audio(self) -> None:
28    """Playback audio recordings"""
29    try:
30        sd.play(self.audio_stream, samplerate=self.frequency)
31        sd.wait()
32    except TypeError as error_log:
33        dbuq(error_log)

Playback audio recordings

async def erase_audio(self) -> None:
36async def erase_audio(self) -> None:
37    """Clear audio graph and recording"""
38    self.audio_stream = [0]
39    self.frequency = 0.0
40    self.sample_length = 0.0

Clear audio graph and recording