Remove variable audio recordings data types (will be converted to float32 anyway)

This commit is contained in:
CarolinePascal 2025-04-04 18:24:04 +02:00
parent 058478a74d
commit 44af02a334
No known key found for this signature in database
2 changed files with 3 additions and 4 deletions

View File

@ -33,5 +33,4 @@ class MicrophoneConfig(MicrophoneConfigBase):
microphone_index: int microphone_index: int
sampling_rate: int | None = None sampling_rate: int | None = None
channels: list[int] | None = None channels: list[int] | None = None
data_type: str | None = None
mock: bool = False mock: bool = False

View File

@ -116,7 +116,7 @@ class Microphone:
```python ```python
from lerobot.common.robot_devices.microphones.configs import MicrophoneConfig from lerobot.common.robot_devices.microphones.configs import MicrophoneConfig
config = MicrophoneConfig(microphone_index=0, sampling_rate=16000, channels=[1], data_type="int16") config = MicrophoneConfig(microphone_index=0, sampling_rate=16000, channels=[1])
microphone = Microphone(config) microphone = Microphone(config)
microphone.connect() microphone.connect()
@ -136,7 +136,6 @@ class Microphone:
#Store the recording sampling rate and channels #Store the recording sampling rate and channels
self.sampling_rate = config.sampling_rate self.sampling_rate = config.sampling_rate
self.channels = config.channels self.channels = config.channels
self.data_type = config.data_type
self.mock = config.mock self.mock = config.mock
@ -203,7 +202,7 @@ class Microphone:
device=self.microphone_index, device=self.microphone_index,
samplerate=self.sampling_rate, samplerate=self.sampling_rate,
channels=max(self.channels)+1, channels=max(self.channels)+1,
dtype=self.data_type, dtype="float32",
callback=self._audio_callback, callback=self._audio_callback,
) )
#Remark : the blocksize parameter could be passed to the stream to ensure that audio_callback always recieve same length buffers. #Remark : the blocksize parameter could be passed to the stream to ensure that audio_callback always recieve same length buffers.
@ -220,6 +219,7 @@ class Microphone:
self.read_queue.put(indata[:,self.channels]) self.read_queue.put(indata[:,self.channels])
def _record_loop(self, output_file: Path) -> None: def _record_loop(self, output_file: Path) -> None:
#Can only be run on a single process/thread for file writing safety
with sf.SoundFile(output_file, mode='x', samplerate=self.sampling_rate, with sf.SoundFile(output_file, mode='x', samplerate=self.sampling_rate,
channels=max(self.channels)+1, subtype=sf.default_subtype(output_file.suffix[1:])) as file: channels=max(self.channels)+1, subtype=sf.default_subtype(output_file.suffix[1:])) as file:
while not self.record_stop_event.is_set(): while not self.record_stop_event.is_set():