Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

SALMONN: Speech Audio Language Music Open Neural Network

🚀🚀 Welcome to the repo of SALMONN!

SALMONN is a large language model (LLM) enabling speech, audio events, and music inputs, which is developed by the Department of Electronic Engineering at Tsinghua University and ByteDance. Instead of speech-only input or audio-event-only input, SALMONN can perceive and understand all kinds of audio inputs and therefore obtain emerging capabilities such as multilingual speech recognition and translation and audio-speech co-reasoning. This can be regarded as giving the LLM "ears" and cognitive hearing abilities, which makes SALMONN a step towards hearing-enabled artificial general intelligence.

🌟 Structure

The model architecture of SALMONN is shown below. A window-level Q-Former is used as the connection module to fuse the outputs from a Whisper speech encoder and a BEATs audio encoder as augmented audio tokens, which are aligned with the LLM input space. The LoRA adaptor aligns the augmented LLM input space with its output space. The text prompt is used to instruct SALMONN to answer open-ended questions about the general audio inputs and the answers are in the LLM text responses.

⚡️ Demos

Compared with traditional speech and audio processing tasks such as speech recognition and audio caption, SALMONN leverages the general knowledge and cognitive abilities of the LLM to achieve a cognitively oriented audio perception, which dramatically improves the versatility of the model and the richness of the task. In addition, SALMONN is able to follow textual commands and even spoken commands with a relatively high degree of accuracy. Since SALMONN only uses training data based on textual commands, listening to spoken commands is also a cross-modal emergent ability.

Here are some examples of SALMONN.

AudioResponse
gunshots.wavsac
duck.wavstory
music.wavmc

Datasets

  • Download raw audio files from here
    • Put downloaded directory path into data_prefix of config
    • contains 1.4TB of audio
      168G WavCaps
      165G audiocaps
      110G GigaSpeech
      58G LibriSpeech
      3.7G MusicNet
      2.0G Clotho
      
  • Download annotation files from here
    • place the jsons under data directory.
    • NOTE: Only train split will be released to public.

🌈 How to train a model

For SALMONN-13B v1, you need to use the following dependencies:

  1. Our environment: The python version is 3.9.17, and other required packages can be installed with the following command: pip install -r requirements.txt.
  2. Download whisper large v2 to whisper_path.
  3. Download Fine-tuned BEATs_iter3+ (AS2M) (cpt2) to beats_path.
  4. Download vicuna 13B v1.1 to llama_path.
  5. Running with python3 train.py --cfg-path configs/config.yaml
  6. You may try --dryrun for loading dataset and dummy small model.

🌈 How to inference in CLI

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 cli_inference.py --cfg-path configs/decode_config.yaml Now you can input wav_path and prompt. Enjoy yourself !

🌈 How to launch a web demo

  1. Same as How to train a model: 1-4.
  2. Download salmonn v1 to ckpt.
  3. Running with python3 web_demo.py --cfg-path configs/decode_config.yaml

👀 Team

Team Tsinghua: Wenyi Yu, Changli Tang, Guangzhi Sun, Chao Zhang

Team ByteDance: Xianzhao Chen, Wei Li, Tian Tan, Lu Lu, Zejun Ma

✨ Citation

If you find SALMONN / video-SALMONN useful, please cite the paper:

@inproceedings{
tang2024salmonn,
title={{SALMONN}: Towards Generic Hearing Abilities for Large Language Models},
author={Changli Tang and Wenyi Yu and Guangzhi Sun and Xianzhao Chen and Tian Tan and Wei Li and Lu Lu and Zejun MA and Chao Zhang},
booktitle={The Twelfth International Conference on Learning Representations},
year={2024},
url={https://openreview.net/forum?id=14rn7HpKVk}
}

About

Audio Language Model trainer

Resources

Code of conduct

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages