logo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Readme
Files and versions

96 lines
2.6 KiB

# Audio Embedding with CLMR
*Author: [Jael Gu](https://github.com/jaelgu)*
<br />
## Description
The audio embedding operator converts an input audio into a dense vector which can be used to represent the audio clip's semantics.
Each vector represents for an audio clip with a fixed length of around 2s.
This operator is built on top of the original implementation of [CLMR](https://github.com/Spijkervet/CLMR).
The [default model weight](clmr_checkpoint_10000.pt) provided is pretrained on [Magnatagatune Dataset](https://paperswithcode.com/dataset/magnatagatune) with [SampleCNN](sample_cnn.py).
<br />
## Code Example
Generate embeddings for the audio "test.wav".
*Write the pipeline in simplified style*:
```python
import towhee
(
towhee.glob('test.wav')
.audio_decode.ffmpeg()
.runas_op(func=lambda x:[y[0] for y in x])
.audio_embedding.clmr()
.show()
)
```
| [-2.1045141, 0.55381, 0.4537212, ...] shape=(6, 512) |
*Write a same pipeline with explicit inputs/outputs name specifications:*
```python
import towhee
(
towhee.glob['path']('test.wav')
.audio_decode.ffmpeg['path', 'frames']()
.runas_op['frames', 'frames'](func=lambda x:[y[0] for y in x])
.audio_embedding.clmr['frames', 'vecs']()
.select['path', 'vecs']()
.show()
)
```
[array([[-2.1045141 , 0.55381 , 0.4537212 , ..., 0.18805158,
0.3079657 , -1.216063 ],
[-2.1045141 , 0.55381036, 0.45372102, ..., 0.18805173,
0.3079657 , -1.216063 ],
[-2.0874703 , 0.5511826 , 0.46051833, ..., 0.18650496,
0.33218473, -1.2182183 ],
[-2.0874703 , 0.55118287, 0.4605182 , ..., 0.18650502,
0.3321851 , -1.2182183 ],
[-2.0771544 , 0.5641223 , 0.43814823, ..., 0.18220925,
0.33022994, -1.2070589 ],
[-2.0771549 , 0.5641221 , 0.43814805, ..., 0.1822092 ,
0.33022994, -1.2070588 ]], dtype=float32)]
<br />
## Factory Constructor
Create the operator via the following factory method
***audio_embedding.clmr(framework="pytorch")***
**Parameters:**
*framework: str*
The framework of model implementation.
Default value is "pytorch" since the model is implemented in Pytorch.
<br />
## Interface
An audio embedding operator generates vectors in numpy.ndarray given towhee audio frames.
**Parameters:**
*data: List[towhee.types.audio_frame.AudioFrame]*
Input audio data is a list of towhee audio frames.
The input data should represent for an audio longer than 3s.
**Returns**:
*numpy.ndarray*
3 years ago
Audio embeddings in shape (num_clips, 512).
Each embedding stands for features of an audio clip with length of 2.7s.