/ Модель

Характеристики

Архитектура
llama · dense
Опубликована
24 янв 2025

CaReAQA

Генерация текстаТекст → текст3 профессии

CaReAQA отвечает на диагностические вопросы по аудиозаписям сердечных и лёгочных звуков, помогая анализировать аускультационные признаки.

207скачиваний за 30 дней2лайкавеса обновлены18 июн 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

CaReAQA — модель для ответов на открытые вопросы по аудиозаписям сердечных и лёгочных звуков. Она объединяет обработку аудио с большой языковой моделью и предназначена для анализа аускультационных данных: например, выявления шумов, указания их локализации и формулирования диагностических выводов по звуку и вопросу пользователя.

Модель ориентирована на сценарии поддержки анализа сердечно-сосудистого и респираторного здоровья. На вход подаются предварительно обработанное аудио и диагностический вопрос, на выходе — ответ на естественном языке. В метаданных указаны семейство Llama, плотная архитектура, формат PyTorch и языковой тег английского языка. Лицензия и сведения о длине контекста в предоставленных данных отсутствуют.

Сценарии применения

  • анализ сердечных шумов по аудиозаписи
  • определение локализации аускультационных шумов
  • ответы на вопросы по звукам лёгких
  • получение диагностических наблюдений по записи сердца или лёгких

Ограничения

Модель рассчитана на предварительно обработанные аудиоданные; README не приводит проверок точности или клинической валидации. Её ответы не следует считать самостоятельным медицинским диагнозом.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

CaReAQA: A Cardiac and Respiratory Audio Question Answering Model for Open-Ended Diagnostic Reasoning

CaReAQA is a model designed for Audio Question Answering (AQA) in the domain of cardiac and respiratory health. This model integrates audio processing and large language models (LLMs) to enable open-ended diagnostic reasoning based on heart and lung sounds. It is capable of answering questions related to auscultation sounds, such as identifying murmurs, their locations, and other diagnostic insights derived from acoustic signals.


Features

  • Cardiac and Respiratory Audio Processing: The model works with pre-processed audio data, such as heart murmurs and lung sounds, to derive useful diagnostic insights.
  • Open-Ended Question Answering: Provides natural language answers based on audio input and diagnostic queries.
  • Integration of Audio and Language Models: Combines audio feature extraction with a powerful language model to answer complex, context-rich questions.
  • Model: Available for easy download and integration from Hugging Face.

Installation

To get started, you can clone this repository and install the necessary dependencies:

git clone https://github.com/tsnng/CaReAQA.git
cd CaReAQA
pip install -r requirements.txt

Load the Model

The load_careqa_model function allows you to download and load the pre-trained CaReAQA model from Hugging Face.

from huggingface_hub import hf_hub_download

def load_careqa_model(repo_id, model_filename, llm_type, prefix_length=8):
    model_path = hf_hub_download(repo_id=repo_id, filename=model_filename)
    model = AudioQAModel(
        llm_type=llm_type,
        opera_checkpoint_path=None,
        prefix_length=prefix_length,
        clip_length=1,
        setting="lora",
        mapping_type="Transformer",
        fine_tune_opera=True,
        args=None
    ).eval().cuda()
    state_dict = torch.load(model_path, map_location="cpu")
    model.load_state_dict(state_dict, strict=False)
    return model, model_path

Preprocessing Audio

The preprocess_audio function processes the input audio into a format suitable for the model.


import librosa
import torch

def preprocess_audio(audio_path, sr=16000):
    raw_audio, sr = librosa.load(audio_path, sr=sr)
    mel_spec = librosa.feature.melspectrogram(
        y=raw_audio, sr=sr, n_fft=1024, hop_length=512, n_mels=64
    )
    log_mel_spec = librosa.power_to_db(mel_spec, ref=np.max)
    audio_tensor = torch.tensor(log_mel_spec, dtype=torch.float32).unsqueeze(0).cuda()
    return audio_tensor


Generating Answers

To generate answers from the model based on an audio input and a diagnostic question:


def generate_answer(model, tokenizer, audio_tensor, question, prefix_length=8, audio_feature_dim=1280):
    audio_features = model.audio_model.extract_feature(audio_tensor, dim=audio_feature_dim)
    projected_prefix = model.prefix_project(audio_features)

    q_prefix = tokenizer.encode("question: ", add_special_tokens=False)
    q_tokens = tokenizer.encode(question, add_special_tokens=False)
    a_prefix = tokenizer.encode(" answer", add_special_tokens=False)

    input_tokens = q_prefix + q_tokens + a_prefix
    input_ids = torch.tensor([input_tokens + [tokenizer.eos_token_id] * prefix_length], dtype=torch.long).to("cuda")
    attention_mask = torch.ones_like(input_ids)

    input_embeds = model.llm.get_input_embeddings()(input_ids)
    input_embeds[0, len(q_prefix + q_tokens) : len(q_prefix + q_tokens) + prefix_length] = projected_prefix[0]

    output_ids = model.llm.generate(
        inputs_embeds=input_embeds,
        attention_mask=attention_mask,
        max_new_tokens=50,
        do_sample=False
    )

    answer = tokenizer.decode(output_ids[0], skip_special_tokens=True).strip()
    return answer


Example

Here’s how you can use the model for generating answers based on an audio input and a question:

repo_id = "tsnngw/CaReAQA"
model_filename = "model.pt"
audio_path = "/path/to/audio.wav"
question = "Where is the murmur most audible?"

tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-3B", token=True)
model, _ = load_careqa_model(repo_id=repo_id, model_filename=model_filename, llm_type="meta-llama/Llama-3.2-3B")

audio_tensor = preprocess_audio(audio_path)
answer = generate_answer(model, tokenizer, audio_tensor, question)

print(f"Question: {question}")
print(f"Answer: {answer}")


Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
CaReAQA
Ревизия весов
cae506a

0 моделей