LongCap-35B-A3B

LongCap turns a recording, from a few seconds up to about two hours, into a timeline of speech, music, and sound events. Each event has start and end times and a structured set of attributes. The same checkpoint also transcribes speech with speaker labels.

Quickstart | Code | Project page | Paper (arXiv, coming soon) | Benchmark (LongCapBench-TAC-Long) | FP8 version

These are the BF16 weights, for two H100 80GB GPUs. For a single GPU, use the FP8 version.

Caption quality over two hours of audio

Caption quality over time on LongCapBench-TAC-Long (lower TER and GER and higher tcpCapSim are better). Left of each divider: independent 10-minute segments, where other systems degrade within minutes. Right: LongCap's single pass over full recordings of up to two hours. LongCap-122B-A10B is a larger model from the paper and is not released.

Highlights

  • Hour-scale audio. LongCap reads a recording in short chunks and writes the events of each chunk as it goes, keeping earlier audio and text in context (up to 1M tokens).
  • Timestamped, structured events. Each event has start and end times and attributes from 62 expert-designed keys covering speech, music, and sound.
  • Two tasks, one model. Timestamped audio captioning, and speech recognition with speaker diarization.
  • Strong captions. 64.6% tcpCapSim on LongCapBench-TAC-Short (a benchmark from the paper), against 52.7% for Qwen3.5-Omni-Plus, at similar timeline error (13.0% vs 13.2% TER).

Model variants

Repository Precision Size GPUs
LongCap-35B-A3B BF16 70.6 GB 2x H100 80GB
LongCap-35B-A3B-FP8 FP8 MoE experts, BF16 elsewhere 38.4 GB 1x H100 80GB

Only the MoE expert weights are quantized, and the two versions produce closely matching output. All reported scores use FP8.

Output

LongCap output format

Schematic of the output, with English attribute names for readability.

Each event has a type (speech, music, or sound_event), the attributes that apply to it, and a short caption. For example, speech events carry the transcript and speaker traits, music events the instruments and tempo, and sound events the source and distance. Attribute names and values are written in Chinese, while transcripts and lyrics keep the spoken language. attribute_keys.json gives the English name of every key.

Example. Four events LongCap predicted 87 minutes into A Star Is Born (1937), in a single pass over the 110-minute film: footsteps walking away, two short lines of speech, and a trumpet solo marking a scene change. Times are seconds from the start of the film.

Show the prediction
{
  "key": "01_movie_en",
  "duration": 6640.047875,
  "events": [
    {
      "start": 5242.7,
      "end": 5246.0,
      "attributes": {
        "type": "sound_event",
        "ๅฃฐ้Ÿณไบ‹ไปถ่ฏ†ๅˆซ": "่„šๆญฅๅฃฐ",
        "ๅฃฐๆบ็œŸๅฎžๆ€ง": "็œŸๅฎž",
        "็ผ–่พ‘/ๆ‹ผๆŽฅๆฃ€ๆต‹": "ๆ— ๆ˜Žๆ˜พๅ‰ช่พ‘/ๆ‹ผๆŽฅ",
        "ๅ“ๅบฆ่ฝฎๅป“": "็”ฑ่ฟ‘ๅŠ่ฟœ",
        "้Ÿณ่‰ฒไธŽ่ดจๆ„Ÿ": "็กฌๅบ•้ž‹่ตฐๅœจ็กฌ่ดจๅœฐ้ขไธŠ",
        "ๆททๅ“็‰นๆ€ง": "่ฝปๅพฎๆˆฟ้—ดๆททๅ“",
        "่ท็ฆปไผฐ่ฎก": "็”ฑ่ฟ‘ๅŠ่ฟœ",
        "ๅ‰ๆ™ฏ-่ƒŒๆ™ฏ้ŸณๅŒบๅˆ†": "ๅ‰ๆ™ฏ",
        "ๅฃฐ้ŸณๅŠŸ่ƒฝ": "่กจ็คบไบบ็‰ฉ็ฆปๅผ€",
        "caption": "ๅฅฅๅˆฉๅผ—็ฆปๅผ€็š„่„šๆญฅๅฃฐ๏ผŒๅฃฐ้Ÿณ้€ๆธ่ฟœๅŽปใ€‚"
      }
    },
    {
      "start": 5246.8,
      "end": 5247.5,
      "attributes": {
        "type": "speech",
        "่ฏด่ฏไบบ่บซไปฝ": "่ฏบๆ›ผ (Norman)",
        "่ฏด่ฏไบบๅนด้พ„": "ไธญๅนด",
        "่ฏด่ฏไบบๆ€งๅˆซ": "็”ท",
        "่ฏ่ฏญ่ง’่‰ฒ": "่‡ช่จ€่‡ช่ฏญ่€…",
        "ๆ–‡ๅญ—่ฝฌๅ†™": "Well, Cuddles.",
        "่ฏญ่จ€่ฏ†ๅˆซ": "่‹ฑ่ฏญ",
        "ๆ–น่จ€": "้€š็”จ็พŽๅผ่‹ฑ่ฏญ",
        "ๅฃ้Ÿณ": "ๆ— ๆ˜Žๆ˜พๅœฐๅŸŸๅฃ้Ÿณ",
        "่ฏๆฑ‡้šพๅบฆ": "ไฝŽ",
        "ๅฅๆณ•ๅคๆ‚ๅบฆ": "็ฎ€ๅ•",
        "ๅ‘ฝๅๅฎžไฝ“": "Cuddles",
        "ๅ“ๅบฆ่ฝฎๅป“": "ไฝŽ",
        "ๅ‘ๅฃฐ่ดจ้‡": "่‡ช่จ€่‡ช่ฏญ",
        "ๅ—“้Ÿณๅฃฐๅญฆ็ป†่Š‚": "ไฝŽ้ŸณๅŒบ",
        "่ฏญ้€Ÿ": "ๆ…ข",
        "้Ÿณ้ซ˜่ฏญ่ฐƒ": "ๅนณ่ฐƒ",
        "ๆ„Ÿ็Ÿฅ้Ÿณ้ข‘่ดจ้‡": "่‰ฏๅฅฝ๏ผŒๆœ‰ๅนดไปฃๆ„Ÿ",
        "่ฏ่ฝฎ่ฝฌๆขๆจกๅผ": "็‹ฌ็™ฝ",
        "่ฏด่ฏไบบๆƒ…็ปช": "ๅนณ้™",
        "ๆƒ…็ปชๅผบๅบฆ/ๅ”ค้†’ๅบฆ": "ไฝŽ",
        "ๆ•ˆไปท่ฝจ่ฟน": "ไธญๆ€ง",
        "่ฏด่ฏไบบๆ„ๅ›พ": "่‡ช่จ€่‡ช่ฏญ",
        "่จ€่ฏญ่กŒไธบ็ฑปๅž‹": "็‹ฌ็™ฝ",
        "ๆฝœๅฐ่ฏ": "็Žฐๅœจๆฒกไบบไบ†",
        "ๆ–‡ๅŒ–่ฏญๅขƒ": "ๅฅฝ่Žฑๅž็”ตๅฝฑๅทฅไธš",
        "ๅฃฐ้ŸณๅŠŸ่ƒฝ": "ๅฑ•็Žฐไบบ็‰ฉ็Šถๆ€",
        "caption": "่ฏบๆ›ผ็‹ฌ่‡ชไธ€ไบบๆ—ถ๏ผŒ่ฝปๅฃฐๅ‘ผๅ”คCuddles็š„ๅๅญ—ใ€‚"
      }
    },
    {
      "start": 5249.1,
      "end": 5250.5,
      "attributes": {
        "type": "speech",
        "่ฏด่ฏไบบ่บซไปฝ": "่ฏบๆ›ผ (Norman)",
        "่ฏด่ฏไบบๅนด้พ„": "ไธญๅนด",
        "่ฏด่ฏไบบๆ€งๅˆซ": "็”ท",
        "่ฏ่ฏญ่ง’่‰ฒ": "่‡ช่จ€่‡ช่ฏญ่€…",
        "ๆ–‡ๅญ—่ฝฌๅ†™": "Alone at last.",
        "่ฏญ่จ€่ฏ†ๅˆซ": "่‹ฑ่ฏญ",
        "ๆ–น่จ€": "้€š็”จ็พŽๅผ่‹ฑ่ฏญ",
        "ๅฃ้Ÿณ": "ๆ— ๆ˜Žๆ˜พๅœฐๅŸŸๅฃ้Ÿณ",
        "่ฏๆฑ‡้šพๅบฆ": "ไฝŽ",
        "ๅฅๆณ•ๅคๆ‚ๅบฆ": "็ฎ€ๅ•",
        "ๅ“ๅบฆ่ฝฎๅป“": "ไฝŽ",
        "ๅ‘ๅฃฐ่ดจ้‡": "่‡ช่จ€่‡ช่ฏญใ€ๅฆ‚้‡Š้‡่ดŸ",
        "ๅ—“้Ÿณๅฃฐๅญฆ็ป†่Š‚": "ไฝŽ้ŸณๅŒบ",
        "่ฏญ้€Ÿ": "ๆ…ข",
        "้Ÿณ้ซ˜่ฏญ่ฐƒ": "ไธ‹้™",
        "้‡้ŸณไธŽๅผบ่ฐƒ": "Alone, last",
        "ๆ„Ÿ็Ÿฅ้Ÿณ้ข‘่ดจ้‡": "่‰ฏๅฅฝ๏ผŒๆœ‰ๅนดไปฃๆ„Ÿ",
        "่ฏ่ฝฎ่ฝฌๆขๆจกๅผ": "็‹ฌ็™ฝ",
        "่ฏด่ฏไบบๆƒ…็ปช": "ๅฆ‚้‡Š้‡่ดŸ",
        "ๆƒ…็ปชๅผบๅบฆ/ๅ”ค้†’ๅบฆ": "ไฝŽ",
        "ๆ•ˆไปท่ฝจ่ฟน": "็งฏๆž",
        "่ฏด่ฏไบบๆ„ๅ›พ": "่‡ช่จ€่‡ช่ฏญ",
        "่จ€่ฏญ่กŒไธบ็ฑปๅž‹": "็‹ฌ็™ฝ",
        "ๆฝœๅฐ่ฏ": "็ปˆไบŽๆธ…ๅ‡€ไบ†",
        "ๆ–‡ๅŒ–่ฏญๅขƒ": "ๅฅฝ่Žฑๅž็”ตๅฝฑๅทฅไธš",
        "ๅฃฐ้ŸณๅŠŸ่ƒฝ": "ๅฑ•็Žฐไบบ็‰ฉ็Šถๆ€",
        "caption": "่ฏบๆ›ผ่‡ช่จ€่‡ช่ฏญ้“๏ผšโ€œ็ปˆไบŽ็‹ฌๅค„ไบ†ใ€‚โ€"
      }
    },
    {
      "start": 5253.5,
      "end": 5257.5,
      "attributes": {
        "type": "music",
        "ไนๅ™จๅˆ—่กจ": "ๅฐๅท",
        "ไนๅ™จๅŠŸ่ƒฝ": "ไธปๆ—‹ๅพ‹",
        "ๅฃฐ้ƒจ็ฑปๅž‹": "็‹ฌๅฅ",
        "ไนๅ™จ้Ÿณ่‰ฒ": "ๆ˜Žไบฎใ€้‡‘ๅฑžๆ„Ÿ",
        "้€Ÿๅบฆ/BPM": "็บฆ120",
        "่Š‚ๆ‹ๅผบๅบฆ": "ๅผบ",
        "่ฐƒๅผ/่ฐƒๆ€ง": "ๅคง่ฐƒ",
        "ไธปๆ—‹ๅพ‹": "ไธŠ่กŒ้Ÿณ้˜ถๅผๆ—‹ๅพ‹",
        "ๆ—‹ๅพ‹่ฝฎๅป“": "ไธŠ่กŒ",
        "้Ÿณไน็ป‡ไฝ“็ฑปๅž‹": "ๅ•้Ÿณ้Ÿณไน",
        "ไนๅ™จๆผ”ๅฅๆณ•": "ๆ–ญๅฅ",
        "ๆผ”ๅฅๅŠจๆ€": "ๅผบ",
        "้Ÿณไน็ป“ๆž„ๆฎต่ฝ": "ๅผ•ๅญ",
        "ๆททๅ“็‰นๆ€ง": "ๆ˜Žๆ˜พ",
        "้Ÿณไนๆƒ…็ปช": "ๆฌขๅฟซใ€ๆดปๆณผ",
        "ๆƒ…็ปชๅผบๅบฆ/ๅ”ค้†’ๅบฆ": "้ซ˜",
        "ๅฃฐ้ŸณๅŠŸ่ƒฝ": "ๅœบๆ™ฏ่ฝฌๆข/ๆƒ…็ปชๆธฒๆŸ“",
        "caption": "ไธ€ๆฎตๆ˜Žไบฎๆฌขๅฟซ็š„ๅฐๅท็‹ฌๅฅๅ“่ตท๏ผŒไฝœไธบๅœบๆ™ฏ็š„็ป“ๆŸๆˆ–่ฝฌๆขใ€‚"
      }
    }
  ]
}

Usage

LongCap runs through its own vLLM server and client, not a standard Transformers pipeline. The quickstart on GitHub shows how to install LongCap in a Python environment or with Docker, download this checkpoint, start the server, and caption or diarize a recording. This BF16 checkpoint needs two H100 80GB GPUs.

Disclaimer

LongCap is a research release, intended for research use. It is not a product or a hosted service and has not been validated for production use. Like other AI models, it can make mistakes: it may miss or invent events, give wrong timestamps, mistranscribe speech, or mislabel speakers. Attributes such as a speaker's gender, age, or emotion are inferred from audio and may be wrong or biased. Review outputs before relying on them, and do not use them to identify people or to make decisions about them. You are responsible for how you use the model and its outputs, including having the right to process the audio you provide. The software and weights are provided "as is", without warranty of any kind, under the Apache License 2.0.

Downloads last month
63
Safetensors
Model size
35B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for JinchuanTian/LongCap-35B-A3B

Finetuned
(89)
this model
Quantizations
1 model

Collection including JinchuanTian/LongCap-35B-A3B