Пример #1
0
 def test_audios_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             audio=V1EventAudio(sample_rate=1.1,
                                num_channels=2,
                                length_frames=2,
                                path="test"),
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             audio=V1EventAudio(
                 sample_rate=1.11,
                 num_channels=22,
                 length_frames=22,
                 path="test",
                 content_type="wav",
             ),
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             audio=V1EventAudio(path="testwave", content_type="wav"),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="audio",
         data=os.path.abspath(
             "tests/fixtures/polyboard/audio/audio_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Пример #2
0
def audio(asset_path: str,
          tensor,
          sample_rate=44100,
          asset_rel_path: str = None):
    if not np:
        logger.warning(NUMPY_ERROR_MESSAGE)
        return UNKNOWN

    tensor = to_np(tensor)
    tensor = tensor.squeeze()
    if abs(tensor).max() > 1:
        print("warning: audio amplitude out of range, auto clipped.")
        tensor = tensor.clip(-1, 1)
    assert tensor.ndim == 1, "input tensor should be 1 dimensional."

    tensor_list = [int(32767.0 * x) for x in tensor]

    import wave
    import struct

    check_or_create_path(asset_path, is_dir=False)

    wave_write = wave.open(asset_path, "wb")
    wave_write.setnchannels(1)
    wave_write.setsampwidth(2)
    wave_write.setframerate(sample_rate)
    tensor_enc = b""
    for v in tensor_list:
        tensor_enc += struct.pack("<h", v)

    wave_write.writeframes(tensor_enc)
    wave_write.close()
    return V1EventAudio(
        sample_rate=sample_rate,
        num_channels=1,
        length_frames=len(tensor_list),
        path=asset_rel_path or asset_path,
        content_type="audio/wav",
    )
Пример #3
0
def audio_path(
    from_path: str, asset_path: str, content_type=None, asset_rel_path: str = None
) -> V1EventAudio:
    copy_file_path(from_path, asset_path)
    return V1EventAudio(path=asset_rel_path or asset_path, content_type=content_type)
Пример #4
0
def audio_path(from_path: str,
               asset_path: str,
               content_type=None) -> V1EventAudio:
    check_or_create_path(asset_path, is_dir=False)
    shutil.copy(from_path, asset_path)
    return V1EventAudio(path=asset_path, content_type=content_type)