--- license: cc language: - en - de base_model: - audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim - google-bert/bert-base-uncased tags: - emotion - audio_classification --- This repo includes the official PyTorch checkpoint of *ParaCLAP – Towards a general language-audio model for computational paralinguistic tasks* ## Abstract Contrastive language-audio pretraining (CLAP) has recently emerged as a method for making audio analysis more generalisable. Specifically, CLAP-style models are able to ‘answer’ a diverse set of language queries, extending the capabilities of audio models beyond a closed set of labels. However, CLAP relies on a large set of (audio, query) pairs for pretraining. While such sets are available for general audio tasks, like captioning or sound event detection, there are no datasets with matched audio and text queries for computational paralinguistic (CP) tasks. As a result, the community relies on generic CLAP models trained for general audio with limited success. In the present study, we explore training considerations for ParaCLAP, a CLAP-style model suited to CP, including a novel process for creating audio-language queries. We demonstrate its effectiveness on a set of computational paralinguistic tasks, where it is shown to surpass the performance of open-source state-of-the-art models. ## Instruction Before Evaluation, I would recommand to clone the repo from HuggingFace or [GitHub](https://github.com/KeiKinn/ParaCLAP) ### Evaluation ```python import os import torch import librosa from transformers import logging from transformers import AutoTokenizer from models_xin import CLAP from utils import compute_similarity if __name__ == '__main__': logging.set_verbosity_error() ckpt = torch.hub.load_state_dict_from_url( url="https://huggingface.co/KeiKinn/paraclap/resolve/main/best.pth.tar?download=true", map_location="cpu", check_hash=True, ) text_model = 'bert-base-uncased' audio_model = 'audeering/wav2vec2-large-robust-12-ft-emotion-msp-dim' device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') candidates = ['happy', 'sad', 'surprise', 'angry'] # free to adapt it to your need wavpath = '[Waveform path]' # single channel wavform waveform, sample_rate = librosa.load(wavpath, sr=16000) x = torch.Tensor(waveform) tokenizer = AutoTokenizer.from_pretrained(text_model) candidate_tokens = tokenizer.batch_encode_plus( candidates, padding=True, truncation=True, return_tensors='pt' ) model = CLAP( speech_name=audio_model, text_name=text_model, embedding_dim=768, ) model.load_state_dict(ckpt) model.to(device) print(f'Checkpoint is loaded') model.eval() with torch.no_grad(): z = model( x.unsqueeze(0).to(device), candidate_tokens ) similarity = compute_similarity(z[2], z[0], z[1]) prediction = similarity.T.argmax(dim=1) result = candidates[prediction] ``` ## Citation Info ParaCLAP has been accept at InterSpeech 2024 for presentation. ```bash @inproceedings{Jing24_PTA, title = {ParaCLAP – Towards a general language-audio model for computational paralinguistic tasks}, author = {Xin Jing and Andreas Triantafyllopoulos and Björn Schuller}, year = {2024}, booktitle = {Interspeech 2024}, pages = {1155--1159}, doi = {10.21437/Interspeech.2024-1315}, issn = {2958-1796}, } ``` --- license: cc-by-nc-nd-4.0 language: - en ---