[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CB06XHTGC3HMXG53BXVVE6":3,"skill-same:01M6CB06XHTGC3HMXG53BXVVE6":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":73},"01M6CB06XHTGC3HMXG53BXVVE6","audiocraft-audio-generation",null,"AudioCraft: MusicGen text-to-music, AudioGen text-to-sound.","adnichols\u002Fai-configs","adnichols","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F493746?v=4","01M6C33VRY9WF6XWYPT1AFA7JJ","Aaron Nichols","01M6C33VWTNKGRM92E9G643V4W",5,"MIT","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fmlops\u002Fmodels\u002Faudiocraft\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32],"Audio","audiocraft audio generation","macos","linux","research","multimodal","Transformers","music","text","2026-11-10 10:12:30",false,"---\nname: audiocraft-audio-generation\ndescription: \"AudioCraft: MusicGen text-to-music, AudioGen text-to-sound.\"\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ndependencies: [audiocraft, torch>=2.0.0, transformers>=4.30.0]\nplatforms: [linux, macos]\nmetadata:\n  hermes:\n    tags: [Multimodal, Audio Generation, Text-to-Music, Text-to-Audio, MusicGen]\n\n---\n\n# AudioCraft: Audio Generation\n\nComprehensive guide to using Meta's AudioCraft for text-to-music and text-to-audio generation with MusicGen, AudioGen, and EnCodec.\n\n## When to use AudioCraft\n\n**Use AudioCraft when:**\n- Need to generate music from text descriptions\n- Creating sound effects and environmental audio\n- Building music generation applications\n- Need melody-conditioned music generation\n- Want stereo audio output\n- Require controllable music generation with style transfer\n\n**Key features:**\n- **MusicGen**: Text-to-music generation with melody conditioning\n- **AudioGen**: Text-to-sound effects generation\n- **EnCodec**: High-fidelity neural audio codec\n- **Multiple model sizes**: Small (300M) to Large (3.3B)\n- **Stereo support**: Full stereo audio generation\n- **Style conditioning**: MusicGen-Style for reference-based generation\n\n**Use alternatives instead:**\n- **Stable Audio**: For longer commercial music generation\n- **Bark**: For text-to-speech with music\u002Fsound effects\n- **Riffusion**: For spectogram-based music generation\n- **OpenAI Jukebox**: For raw audio generation with lyrics\n\n## Quick start\n\n### Installation\n\n```bash\n# From PyPI\npip install audiocraft\n\n# From GitHub (latest)\npip install git+https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudiocraft.git\n\n# Or use HuggingFace Transformers\npip install transformers torch torchaudio\n```\n\n### Basic text-to-music (AudioCraft)\n\n```python\nimport torchaudio\nfrom audiocraft.models import MusicGen\n\n# Load model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-small')\n\n# Set generation parameters\nmodel.set_generation_params(\n    duration=8,  # seconds\n    top_k=250,\n    temperature=1.0\n)\n\n# Generate from text\ndescriptions = [\"happy upbeat electronic dance music with synths\"]\nwav = model.generate(descriptions)\n\n# Save audio\ntorchaudio.save(\"output.wav\", wav[0].cpu(), sample_rate=32000)\n```\n\n### Using HuggingFace Transformers\n\n```python\nfrom transformers import AutoProcessor, MusicgenForConditionalGeneration\nimport scipy\n\n# Load model and processor\nprocessor = AutoProcessor.from_pretrained(\"facebook\u002Fmusicgen-small\")\nmodel = MusicgenForConditionalGeneration.from_pretrained(\"facebook\u002Fmusicgen-small\")\nmodel.to(\"cuda\")\n\n# Generate music\ninputs = processor(\n    text=[\"80s pop track with bassy drums and synth\"],\n    padding=True,\n    return_tensors=\"pt\"\n).to(\"cuda\")\n\naudio_values = model.generate(\n    **inputs,\n    do_sample=True,\n    guidance_scale=3,\n    max_new_tokens=256\n)\n\n# Save\nsampling_rate = model.config.audio_encoder.sampling_rate\nscipy.io.wavfile.write(\"output.wav\", rate=sampling_rate, data=audio_values[0, 0].cpu().numpy())\n```\n\n### Text-to-sound with AudioGen\n\n```python\nfrom audiocraft.models import AudioGen\n\n# Load AudioGen\nmodel = AudioGen.get_pretrained('facebook\u002Faudiogen-medium')\n\nmodel.set_generation_params(duration=5)\n\n# Generate sound effects\ndescriptions = [\"dog barking in a park with birds chirping\"]\nwav = model.generate(descriptions)\n\ntorchaudio.save(\"sound.wav\", wav[0].cpu(), sample_rate=16000)\n```\n\n## Core concepts\n\n### Architecture overview\n\n```\nAudioCraft Architecture:\n┌──────────────────────────────────────────────────────────────┐\n│                    Text Encoder (T5)                          │\n│                         │                                     │\n│                    Text Embeddings                            │\n└────────────────────────┬─────────────────────────────────────┘\n                         │\n┌────────────────────────▼─────────────────────────────────────┐\n│              Transformer Decoder (LM)                         │\n│     Auto-regressively generates audio tokens                  │\n│     Using efficient token interleaving patterns               │\n└────────────────────────┬─────────────────────────────────────┘\n                         │\n┌────────────────────────▼─────────────────────────────────────┐\n│                EnCodec Audio Decoder                          │\n│        Converts tokens back to audio waveform                 │\n└──────────────────────────────────────────────────────────────┘\n```\n\n### Model variants\n\n| Model | Size | Description | Use Case |\n|-------|------|-------------|----------|\n| `musicgen-small` | 300M | Text-to-music | Quick generation |\n| `musicgen-medium` | 1.5B | Text-to-music | Balanced |\n| `musicgen-large` | 3.3B | Text-to-music | Best quality |\n| `musicgen-melody` | 1.5B | Text + melody | Melody conditioning |\n| `musicgen-melody-large` | 3.3B | Text + melody | Best melody |\n| `musicgen-stereo-*` | Varies | Stereo output | Stereo generation |\n| `musicgen-style` | 1.5B | Style transfer | Reference-based |\n| `audiogen-medium` | 1.5B | Text-to-sound | Sound effects |\n\n### Generation parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `duration` | 8.0 | Length in seconds (1-120) |\n| `top_k` | 250 | Top-k sampling |\n| `top_p` | 0.0 | Nucleus sampling (0 = disabled) |\n| `temperature` | 1.0 | Sampling temperature |\n| `cfg_coef` | 3.0 | Classifier-free guidance |\n\n## MusicGen usage\n\n### Text-to-music generation\n\n```python\nfrom audiocraft.models import MusicGen\nimport torchaudio\n\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-medium')\n\n# Configure generation\nmodel.set_generation_params(\n    duration=30,          # Up to 30 seconds\n    top_k=250,            # Sampling diversity\n    top_p=0.0,            # 0 = use top_k only\n    temperature=1.0,      # Creativity (higher = more varied)\n    cfg_coef=3.0          # Text adherence (higher = stricter)\n)\n\n# Generate multiple samples\ndescriptions = [\n    \"epic orchestral soundtrack with strings and brass\",\n    \"chill lo-fi hip hop beat with jazzy piano\",\n    \"energetic rock song with electric guitar\"\n]\n\n# Generate (returns [batch, channels, samples])\nwav = model.generate(descriptions)\n\n# Save each\nfor i, audio in enumerate(wav):\n    torchaudio.save(f\"music_{i}.wav\", audio.cpu(), sample_rate=32000)\n```\n\n### Melody-conditioned generation\n\n```python\nfrom audiocraft.models import MusicGen\nimport torchaudio\n\n# Load melody model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-melody')\nmodel.set_generation_params(duration=30)\n\n# Load melody audio\nmelody, sr = torchaudio.load(\"melody.wav\")\n\n# Generate with melody conditioning\ndescriptions = [\"acoustic guitar folk song\"]\nwav = model.generate_with_chroma(descriptions, melody, sr)\n\ntorchaudio.save(\"melody_conditioned.wav\", wav[0].cpu(), sample_rate=32000)\n```\n\n### Stereo generation\n\n```python\nfrom audiocraft.models import MusicGen\n\n# Load stereo model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-stereo-medium')\nmodel.set_generation_params(duration=15)\n\ndescriptions = [\"ambient electronic music with wide stereo panning\"]\nwav = model.generate(descriptions)\n\n# wav shape: [batch, 2, samples] for stereo\nprint(f\"Stereo shape: {wav.shape}\")  # [1, 2, 480000]\ntorchaudio.save(\"stereo.wav\", wav[0].cpu(), sample_rate=32000)\n```\n\n### Audio continuation\n\n```python\nfrom transformers import AutoProcessor, MusicgenForConditionalGeneration\n\nprocessor = AutoProcessor.from_pretrained(\"facebook\u002Fmusicgen-medium\")\nmodel = MusicgenForConditionalGeneration.from_pretrained(\"facebook\u002Fmusicgen-medium\")\n\n# Load audio to continue\nimport torchaudio\naudio, sr = torchaudio.load(\"intro.wav\")\n\n# Process with text and audio\ninputs = processor(\n    audio=audio.squeeze().numpy(),\n    sampling_rate=sr,\n    text=[\"continue with a epic chorus\"],\n    padding=True,\n    return_tensors=\"pt\"\n)\n\n# Generate continuation\naudio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=512)\n```\n\n## MusicGen-Style usage\n\n### Style-conditioned generation\n\n```python\nfrom audiocraft.models import MusicGen\n\n# Load style model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-style')\n\n# Configure generation with style\nmodel.set_generation_params(\n    duration=30,\n    cfg_coef=3.0,\n    cfg_coef_beta=5.0  # Style influence\n)\n\n# Configure style conditioner\nmodel.set_style_conditioner_params(\n    eval_q=3,          # RVQ quantizers (1-6)\n    excerpt_length=3.0  # Style excerpt length\n)\n\n# Load style reference\nstyle_audio, sr = torchaudio.load(\"reference_style.wav\")\n\n# Generate with text + style\ndescriptions = [\"upbeat dance track\"]\nwav = model.generate_with_style(descriptions, style_audio, sr)\n```\n\n### Style-only generation (no text)\n\n```python\n# Generate matching style without text prompt\nmodel.set_generation_params(\n    duration=30,\n    cfg_coef=3.0,\n    cfg_coef_beta=None  # Disable double CFG for style-only\n)\n\nwav = model.generate_with_style([None], style_audio, sr)\n```\n\n## AudioGen usage\n\n### Sound effect generation\n\n```python\nfrom audiocraft.models import AudioGen\nimport torchaudio\n\nmodel = AudioGen.get_pretrained('facebook\u002Faudiogen-medium')\nmodel.set_generation_params(duration=10)\n\n# Generate various sounds\ndescriptions = [\n    \"thunderstorm with heavy rain and lightning\",\n    \"busy city traffic with car horns\",\n    \"ocean waves crashing on rocks\",\n    \"crackling campfire in forest\"\n]\n\nwav = model.generate(descriptions)\n\nfor i, audio in enumerate(wav):\n    torchaudio.save(f\"sound_{i}.wav\", audio.cpu(), sample_rate=16000)\n```\n\n## EnCodec usage\n\n### Audio compression\n\n```python\nfrom audiocraft.models import CompressionModel\nimport torch\nimport torchaudio\n\n# Load EnCodec\nmodel = CompressionModel.get_pretrained('facebook\u002Fencodec_32khz')\n\n# Load audio\nwav, sr = torchaudio.load(\"audio.wav\")\n\n# Ensure correct sample rate\nif sr != 32000:\n    resampler = torchaudio.transforms.Resample(sr, 32000)\n    wav = resampler(wav)\n\n# Encode to tokens\nwith torch.no_grad():\n    encoded = model.encode(wav.unsqueeze(0))\n    codes = encoded[0]  # Audio codes\n\n# Decode back to audio\nwith torch.no_grad():\n    decoded = model.decode(codes)\n\ntorchaudio.save(\"reconstructed.wav\", decoded[0].cpu(), sample_rate=32000)\n```\n\n## Common workflows\n\n### Workflow 1: Music generation pipeline\n\n```python\nimport torch\nimport torchaudio\nfrom audiocraft.models import MusicGen\n\nclass MusicGenerator:\n    def __init__(self, model_name=\"facebook\u002Fmusicgen-medium\"):\n        self.model = MusicGen.get_pretrained(model_name)\n        self.sample_rate = 32000\n\n    def generate(self, prompt, duration=30, temperature=1.0, cfg=3.0):\n        self.model.set_generation_params(\n            duration=duration,\n            top_k=250,\n            temperature=temperature,\n            cfg_coef=cfg\n        )\n\n        with torch.no_grad():\n            wav = self.model.generate([prompt])\n\n        return wav[0].cpu()\n\n    def generate_batch(self, prompts, duration=30):\n        self.model.set_generation_params(duration=duration)\n\n        with torch.no_grad():\n            wav = self.model.generate(prompts)\n\n        return wav.cpu()\n\n    def save(self, audio, path):\n        torchaudio.save(path, audio, sample_rate=self.sample_rate)\n\n# Usage\ngenerator = MusicGenerator()\naudio = generator.generate(\n    \"epic cinematic orchestral music\",\n    duration=30,\n    temperature=1.0\n)\ngenerator.save(audio, \"epic_music.wav\")\n```\n\n### Workflow 2: Sound design batch processing\n\n```python\nimport json\nfrom pathlib import Path\nfrom audiocraft.models import AudioGen\nimport torchaudio\n\ndef batch_generate_sounds(sound_specs, output_dir):\n    \"\"\"\n    Generate multiple sounds from specifications.\n\n    Args:\n        sound_specs: list of {\"name\": str, \"description\": str, \"duration\": float}\n        output_dir: output directory path\n    \"\"\"\n    model = AudioGen.get_pretrained('facebook\u002Faudiogen-medium')\n    output_dir = Path(output_dir)\n    output_dir.mkdir(exist_ok=True)\n\n    results = []\n\n    for spec in sound_specs:\n        model.set_generation_params(duration=spec.get(\"duration\", 5))\n\n        wav = model.generate([spec[\"description\"]])\n\n        output_path = output_dir \u002F f\"{spec['name']}.wav\"\n        torchaudio.save(str(output_path), wav[0].cpu(), sample_rate=16000)\n\n        results.append({\n            \"name\": spec[\"name\"],\n            \"path\": str(output_path),\n            \"description\": spec[\"description\"]\n        })\n\n    return results\n\n# Usage\nsounds = [\n    {\"name\": \"explosion\", \"description\": \"massive explosion with debris\", \"duration\": 3},\n    {\"name\": \"footsteps\", \"description\": \"footsteps on wooden floor\", \"duration\": 5},\n    {\"name\": \"door\", \"description\": \"wooden door creaking and closing\", \"duration\": 2}\n]\n\nresults = batch_generate_sounds(sounds, \"sound_effects\u002F\")\n```\n\n### Workflow 3: Gradio demo\n\n```python\nimport gradio as gr\nimport torch\nimport torchaudio\nfrom audiocraft.models import MusicGen\n\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-small')\n\ndef generate_music(prompt, duration, temperature, cfg_coef):\n    model.set_generation_params(\n        duration=duration,\n        temperature=temperature,\n        cfg_coef=cfg_coef\n    )\n\n    with torch.no_grad():\n        wav = model.generate([prompt])\n\n    # Save to temp file\n    path = \"temp_output.wav\"\n    torchaudio.save(path, wav[0].cpu(), sample_rate=32000)\n    return path\n\ndemo = gr.Interface(\n    fn=generate_music,\n    inputs=[\n        gr.Textbox(label=\"Music Description\", placeholder=\"upbeat electronic dance music\"),\n        gr.Slider(1, 30, value=8, label=\"Duration (seconds)\"),\n        gr.Slider(0.5, 2.0, value=1.0, label=\"Temperature\"),\n        gr.Slider(1.0, 10.0, value=3.0, label=\"CFG Coefficient\")\n    ],\n    outputs=gr.Audio(label=\"Generated Music\"),\n    title=\"MusicGen Demo\"\n)\n\ndemo.launch()\n```\n\n## Performance optimization\n\n### Memory optimization\n\n```python\n# Use smaller model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-small')\n\n# Clear cache between generations\ntorch.cuda.empty_cache()\n\n# Generate shorter durations\nmodel.set_generation_params(duration=10)  # Instead of 30\n\n# Use half precision\nmodel = model.half()\n```\n\n### Batch processing efficiency\n\n```python\n# Process multiple prompts at once (more efficient)\ndescriptions = [\"prompt1\", \"prompt2\", \"prompt3\", \"prompt4\"]\nwav = model.generate(descriptions)  # Single batch\n\n# Instead of\nfor desc in descriptions:\n    wav = model.generate([desc])  # Multiple batches (slower)\n```\n\n### GPU memory requirements\n\n| Model | FP32 VRAM | FP16 VRAM |\n|-------|-----------|-----------|\n| musicgen-small | ~4GB | ~2GB |\n| musicgen-medium | ~8GB | ~4GB |\n| musicgen-large | ~16GB | ~8GB |\n\n## Common issues\n\n| Issue | Solution |\n|-------|----------|\n| CUDA OOM | Use smaller model, reduce duration |\n| Poor quality | Increase cfg_coef, better prompts |\n| Generation too short | Check max duration setting |\n| Audio artifacts | Try different temperature |\n| Stereo not working | Use stereo model variant |\n\n## References\n\n- **[Advanced Usage](references\u002Fadvanced-usage.md)** - Training, fine-tuning, deployment\n- **[Troubleshooting](references\u002Ftroubleshooting.md)** - Common issues and solutions\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudiocraft\n- **Paper (MusicGen)**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2306.05284\n- **Paper (AudioGen)**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.15352\n- **HuggingFace**: https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Fmusicgen-small\n- **Demo**: https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Ffacebook\u002FMusicGen\n","# AudioCraft: Audio Generation\n\nComprehensive guide to using Meta's AudioCraft for text-to-music and text-to-audio generation with MusicGen, AudioGen, and EnCodec.\n\n## When to use AudioCraft\n\n**Use AudioCraft when:**\n- Need to generate music from text descriptions\n- Creating sound effects and environmental audio\n- Building music generation applications\n- Need melody-conditioned music generation\n- Want stereo audio output\n- Require controllable music generation with style transfer\n\n**Key features:**\n- **MusicGen**: Text-to-music generation with melody conditioning\n- **AudioGen**: Text-to-sound effects generation\n- **EnCodec**: High-fidelity neural audio codec\n- **Multiple model sizes**: Small (300M) to Large (3.3B)\n- **Stereo support**: Full stereo audio generation\n- **Style conditioning**: MusicGen-Style for reference-based generation\n\n**Use alternatives instead:**\n- **Stable Audio**: For longer commercial music generation\n- **Bark**: For text-to-speech with music\u002Fsound effects\n- **Riffusion**: For spectogram-based music generation\n- **OpenAI Jukebox**: For raw audio generation with lyrics\n\n## Quick start\n\n### Installation\n\n```bash\n# From PyPI\npip install audiocraft\n\n# From GitHub (latest)\npip install git+https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudiocraft.git\n\n# Or use HuggingFace Transformers\npip install transformers torch torchaudio\n```\n\n### Basic text-to-music (AudioCraft)\n\n```python\nimport torchaudio\nfrom audiocraft.models import MusicGen\n\n# Load model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-small')\n\n# Set generation parameters\nmodel.set_generation_params(\n    duration=8,  # seconds\n    top_k=250,\n    temperature=1.0\n)\n\n# Generate from text\ndescriptions = [\"happy upbeat electronic dance music with synths\"]\nwav = model.generate(descriptions)\n\n# Save audio\ntorchaudio.save(\"output.wav\", wav[0].cpu(), sample_rate=32000)\n```\n\n### Using HuggingFace Transformers\n\n```python\nfrom transformers import AutoProcessor, MusicgenForConditionalGeneration\nimport scipy\n\n# Load model and processor\nprocessor = AutoProcessor.from_pretrained(\"facebook\u002Fmusicgen-small\")\nmodel = MusicgenForConditionalGeneration.from_pretrained(\"facebook\u002Fmusicgen-small\")\nmodel.to(\"cuda\")\n\n# Generate music\ninputs = processor(\n    text=[\"80s pop track with bassy drums and synth\"],\n    padding=True,\n    return_tensors=\"pt\"\n).to(\"cuda\")\n\naudio_values = model.generate(\n    **inputs,\n    do_sample=True,\n    guidance_scale=3,\n    max_new_tokens=256\n)\n\n# Save\nsampling_rate = model.config.audio_encoder.sampling_rate\nscipy.io.wavfile.write(\"output.wav\", rate=sampling_rate, data=audio_values[0, 0].cpu().numpy())\n```\n\n### Text-to-sound with AudioGen\n\n```python\nfrom audiocraft.models import AudioGen\n\n# Load AudioGen\nmodel = AudioGen.get_pretrained('facebook\u002Faudiogen-medium')\n\nmodel.set_generation_params(duration=5)\n\n# Generate sound effects\ndescriptions = [\"dog barking in a park with birds chirping\"]\nwav = model.generate(descriptions)\n\ntorchaudio.save(\"sound.wav\", wav[0].cpu(), sample_rate=16000)\n```\n\n## Core concepts\n\n### Architecture overview\n\n```\nAudioCraft Architecture:\n┌──────────────────────────────────────────────────────────────┐\n│                    Text Encoder (T5)                          │\n│                         │                                     │\n│                    Text Embeddings                            │\n└────────────────────────┬─────────────────────────────────────┘\n                         │\n┌────────────────────────▼─────────────────────────────────────┐\n│              Transformer Decoder (LM)                         │\n│     Auto-regressively generates audio tokens                  │\n│     Using efficient token interleaving patterns               │\n└────────────────────────┬─────────────────────────────────────┘\n                         │\n┌────────────────────────▼─────────────────────────────────────┐\n│                EnCodec Audio Decoder                          │\n│        Converts tokens back to audio waveform                 │\n└──────────────────────────────────────────────────────────────┘\n```\n\n### Model variants\n\n| Model | Size | Description | Use Case |\n|-------|------|-------------|----------|\n| `musicgen-small` | 300M | Text-to-music | Quick generation |\n| `musicgen-medium` | 1.5B | Text-to-music | Balanced |\n| `musicgen-large` | 3.3B | Text-to-music | Best quality |\n| `musicgen-melody` | 1.5B | Text + melody | Melody conditioning |\n| `musicgen-melody-large` | 3.3B | Text + melody | Best melody |\n| `musicgen-stereo-*` | Varies | Stereo output | Stereo generation |\n| `musicgen-style` | 1.5B | Style transfer | Reference-based |\n| `audiogen-medium` | 1.5B | Text-to-sound | Sound effects |\n\n### Generation parameters\n\n| Parameter | Default | Description |\n|-----------|---------|-------------|\n| `duration` | 8.0 | Length in seconds (1-120) |\n| `top_k` | 250 | Top-k sampling |\n| `top_p` | 0.0 | Nucleus sampling (0 = disabled) |\n| `temperature` | 1.0 | Sampling temperature |\n| `cfg_coef` | 3.0 | Classifier-free guidance |\n\n## MusicGen usage\n\n### Text-to-music generation\n\n```python\nfrom audiocraft.models import MusicGen\nimport torchaudio\n\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-medium')\n\n# Configure generation\nmodel.set_generation_params(\n    duration=30,          # Up to 30 seconds\n    top_k=250,            # Sampling diversity\n    top_p=0.0,            # 0 = use top_k only\n    temperature=1.0,      # Creativity (higher = more varied)\n    cfg_coef=3.0          # Text adherence (higher = stricter)\n)\n\n# Generate multiple samples\ndescriptions = [\n    \"epic orchestral soundtrack with strings and brass\",\n    \"chill lo-fi hip hop beat with jazzy piano\",\n    \"energetic rock song with electric guitar\"\n]\n\n# Generate (returns [batch, channels, samples])\nwav = model.generate(descriptions)\n\n# Save each\nfor i, audio in enumerate(wav):\n    torchaudio.save(f\"music_{i}.wav\", audio.cpu(), sample_rate=32000)\n```\n\n### Melody-conditioned generation\n\n```python\nfrom audiocraft.models import MusicGen\nimport torchaudio\n\n# Load melody model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-melody')\nmodel.set_generation_params(duration=30)\n\n# Load melody audio\nmelody, sr = torchaudio.load(\"melody.wav\")\n\n# Generate with melody conditioning\ndescriptions = [\"acoustic guitar folk song\"]\nwav = model.generate_with_chroma(descriptions, melody, sr)\n\ntorchaudio.save(\"melody_conditioned.wav\", wav[0].cpu(), sample_rate=32000)\n```\n\n### Stereo generation\n\n```python\nfrom audiocraft.models import MusicGen\n\n# Load stereo model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-stereo-medium')\nmodel.set_generation_params(duration=15)\n\ndescriptions = [\"ambient electronic music with wide stereo panning\"]\nwav = model.generate(descriptions)\n\n# wav shape: [batch, 2, samples] for stereo\nprint(f\"Stereo shape: {wav.shape}\")  # [1, 2, 480000]\ntorchaudio.save(\"stereo.wav\", wav[0].cpu(), sample_rate=32000)\n```\n\n### Audio continuation\n\n```python\nfrom transformers import AutoProcessor, MusicgenForConditionalGeneration\n\nprocessor = AutoProcessor.from_pretrained(\"facebook\u002Fmusicgen-medium\")\nmodel = MusicgenForConditionalGeneration.from_pretrained(\"facebook\u002Fmusicgen-medium\")\n\n# Load audio to continue\nimport torchaudio\naudio, sr = torchaudio.load(\"intro.wav\")\n\n# Process with text and audio\ninputs = processor(\n    audio=audio.squeeze().numpy(),\n    sampling_rate=sr,\n    text=[\"continue with a epic chorus\"],\n    padding=True,\n    return_tensors=\"pt\"\n)\n\n# Generate continuation\naudio_values = model.generate(**inputs, do_sample=True, guidance_scale=3, max_new_tokens=512)\n```\n\n## MusicGen-Style usage\n\n### Style-conditioned generation\n\n```python\nfrom audiocraft.models import MusicGen\n\n# Load style model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-style')\n\n# Configure generation with style\nmodel.set_generation_params(\n    duration=30,\n    cfg_coef=3.0,\n    cfg_coef_beta=5.0  # Style influence\n)\n\n# Configure style conditioner\nmodel.set_style_conditioner_params(\n    eval_q=3,          # RVQ quantizers (1-6)\n    excerpt_length=3.0  # Style excerpt length\n)\n\n# Load style reference\nstyle_audio, sr = torchaudio.load(\"reference_style.wav\")\n\n# Generate with text + style\ndescriptions = [\"upbeat dance track\"]\nwav = model.generate_with_style(descriptions, style_audio, sr)\n```\n\n### Style-only generation (no text)\n\n```python\n# Generate matching style without text prompt\nmodel.set_generation_params(\n    duration=30,\n    cfg_coef=3.0,\n    cfg_coef_beta=None  # Disable double CFG for style-only\n)\n\nwav = model.generate_with_style([None], style_audio, sr)\n```\n\n## AudioGen usage\n\n### Sound effect generation\n\n```python\nfrom audiocraft.models import AudioGen\nimport torchaudio\n\nmodel = AudioGen.get_pretrained('facebook\u002Faudiogen-medium')\nmodel.set_generation_params(duration=10)\n\n# Generate various sounds\ndescriptions = [\n    \"thunderstorm with heavy rain and lightning\",\n    \"busy city traffic with car horns\",\n    \"ocean waves crashing on rocks\",\n    \"crackling campfire in forest\"\n]\n\nwav = model.generate(descriptions)\n\nfor i, audio in enumerate(wav):\n    torchaudio.save(f\"sound_{i}.wav\", audio.cpu(), sample_rate=16000)\n```\n\n## EnCodec usage\n\n### Audio compression\n\n```python\nfrom audiocraft.models import CompressionModel\nimport torch\nimport torchaudio\n\n# Load EnCodec\nmodel = CompressionModel.get_pretrained('facebook\u002Fencodec_32khz')\n\n# Load audio\nwav, sr = torchaudio.load(\"audio.wav\")\n\n# Ensure correct sample rate\nif sr != 32000:\n    resampler = torchaudio.transforms.Resample(sr, 32000)\n    wav = resampler(wav)\n\n# Encode to tokens\nwith torch.no_grad():\n    encoded = model.encode(wav.unsqueeze(0))\n    codes = encoded[0]  # Audio codes\n\n# Decode back to audio\nwith torch.no_grad():\n    decoded = model.decode(codes)\n\ntorchaudio.save(\"reconstructed.wav\", decoded[0].cpu(), sample_rate=32000)\n```\n\n## Common workflows\n\n### Workflow 1: Music generation pipeline\n\n```python\nimport torch\nimport torchaudio\nfrom audiocraft.models import MusicGen\n\nclass MusicGenerator:\n    def __init__(self, model_name=\"facebook\u002Fmusicgen-medium\"):\n        self.model = MusicGen.get_pretrained(model_name)\n        self.sample_rate = 32000\n\n    def generate(self, prompt, duration=30, temperature=1.0, cfg=3.0):\n        self.model.set_generation_params(\n            duration=duration,\n            top_k=250,\n            temperature=temperature,\n            cfg_coef=cfg\n        )\n\n        with torch.no_grad():\n            wav = self.model.generate([prompt])\n\n        return wav[0].cpu()\n\n    def generate_batch(self, prompts, duration=30):\n        self.model.set_generation_params(duration=duration)\n\n        with torch.no_grad():\n            wav = self.model.generate(prompts)\n\n        return wav.cpu()\n\n    def save(self, audio, path):\n        torchaudio.save(path, audio, sample_rate=self.sample_rate)\n\n# Usage\ngenerator = MusicGenerator()\naudio = generator.generate(\n    \"epic cinematic orchestral music\",\n    duration=30,\n    temperature=1.0\n)\ngenerator.save(audio, \"epic_music.wav\")\n```\n\n### Workflow 2: Sound design batch processing\n\n```python\nimport json\nfrom pathlib import Path\nfrom audiocraft.models import AudioGen\nimport torchaudio\n\ndef batch_generate_sounds(sound_specs, output_dir):\n    \"\"\"\n    Generate multiple sounds from specifications.\n\n    Args:\n        sound_specs: list of {\"name\": str, \"description\": str, \"duration\": float}\n        output_dir: output directory path\n    \"\"\"\n    model = AudioGen.get_pretrained('facebook\u002Faudiogen-medium')\n    output_dir = Path(output_dir)\n    output_dir.mkdir(exist_ok=True)\n\n    results = []\n\n    for spec in sound_specs:\n        model.set_generation_params(duration=spec.get(\"duration\", 5))\n\n        wav = model.generate([spec[\"description\"]])\n\n        output_path = output_dir \u002F f\"{spec['name']}.wav\"\n        torchaudio.save(str(output_path), wav[0].cpu(), sample_rate=16000)\n\n        results.append({\n            \"name\": spec[\"name\"],\n            \"path\": str(output_path),\n            \"description\": spec[\"description\"]\n        })\n\n    return results\n\n# Usage\nsounds = [\n    {\"name\": \"explosion\", \"description\": \"massive explosion with debris\", \"duration\": 3},\n    {\"name\": \"footsteps\", \"description\": \"footsteps on wooden floor\", \"duration\": 5},\n    {\"name\": \"door\", \"description\": \"wooden door creaking and closing\", \"duration\": 2}\n]\n\nresults = batch_generate_sounds(sounds, \"sound_effects\u002F\")\n```\n\n### Workflow 3: Gradio demo\n\n```python\nimport gradio as gr\nimport torch\nimport torchaudio\nfrom audiocraft.models import MusicGen\n\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-small')\n\ndef generate_music(prompt, duration, temperature, cfg_coef):\n    model.set_generation_params(\n        duration=duration,\n        temperature=temperature,\n        cfg_coef=cfg_coef\n    )\n\n    with torch.no_grad():\n        wav = model.generate([prompt])\n\n    # Save to temp file\n    path = \"temp_output.wav\"\n    torchaudio.save(path, wav[0].cpu(), sample_rate=32000)\n    return path\n\ndemo = gr.Interface(\n    fn=generate_music,\n    inputs=[\n        gr.Textbox(label=\"Music Description\", placeholder=\"upbeat electronic dance music\"),\n        gr.Slider(1, 30, value=8, label=\"Duration (seconds)\"),\n        gr.Slider(0.5, 2.0, value=1.0, label=\"Temperature\"),\n        gr.Slider(1.0, 10.0, value=3.0, label=\"CFG Coefficient\")\n    ],\n    outputs=gr.Audio(label=\"Generated Music\"),\n    title=\"MusicGen Demo\"\n)\n\ndemo.launch()\n```\n\n## Performance optimization\n\n### Memory optimization\n\n```python\n# Use smaller model\nmodel = MusicGen.get_pretrained('facebook\u002Fmusicgen-small')\n\n# Clear cache between generations\ntorch.cuda.empty_cache()\n\n# Generate shorter durations\nmodel.set_generation_params(duration=10)  # Instead of 30\n\n# Use half precision\nmodel = model.half()\n```\n\n### Batch processing efficiency\n\n```python\n# Process multiple prompts at once (more efficient)\ndescriptions = [\"prompt1\", \"prompt2\", \"prompt3\", \"prompt4\"]\nwav = model.generate(descriptions)  # Single batch\n\n# Instead of\nfor desc in descriptions:\n    wav = model.generate([desc])  # Multiple batches (slower)\n```\n\n### GPU memory requirements\n\n| Model | FP32 VRAM | FP16 VRAM |\n|-------|-----------|-----------|\n| musicgen-small | ~4GB | ~2GB |\n| musicgen-medium | ~8GB | ~4GB |\n| musicgen-large | ~16GB | ~8GB |\n\n## Common issues\n\n| Issue | Solution |\n|-------|----------|\n| CUDA OOM | Use smaller model, reduce duration |\n| Poor quality | Increase cfg_coef, better prompts |\n| Generation too short | Check max duration setting |\n| Audio artifacts | Try different temperature |\n| Stereo not working | Use stereo model variant |\n\n## References\n\n- **[Advanced Usage](references\u002Fadvanced-usage.md)** - Training, fine-tuning, deployment\n- **[Troubleshooting](references\u002Ftroubleshooting.md)** - Common issues and solutions\n\n## Resources\n\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Faudiocraft\n- **Paper (MusicGen)**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2306.05284\n- **Paper (AudioGen)**: https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.15352\n- **HuggingFace**: https:\u002F\u002Fhuggingface.co\u002Ffacebook\u002Fmusicgen-small\n- **Demo**: https:\u002F\u002Fhuggingface.co\u002Fspaces\u002Ffacebook\u002FMusicGen\n",{"name":5,"author":38,"license":15,"version":39,"metadata":40,"platforms":48,"description":7,"dependencies":49},"Orchestra Research","1.0.0",{"hermes":41},{"tags":42},[43,44,45,46,47],"Multimodal","Audio Generation","Text-to-Music","Text-to-Audio","MusicGen",[27,26],[50,51,52],"audiocraft","torch>=2.0.0","transformers>=4.30.0","main","64e2fc9afa7bb3da1138eb73399144d0e7e73e9d","_hermes\u002Fdefault\u002Fskills\u002Fmlops\u002Fmodels\u002Faudiocraft",4,"https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs","https:\u002F\u002Fgithub.com\u002Fadnichols","2026-11-06 00:28:38",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add adnichols\u002Fai-configs --skill audiocraft-audio-generation",{"tool":66,"command":67},"bunx","bunx skills add adnichols\u002Fai-configs --skill audiocraft-audio-generation",{"tool":69,"command":70},"pnpm","pnpm dlx skills add adnichols\u002Fai-configs --skill audiocraft-audio-generation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fmlops\u002Fmodels\u002Faudiocraft\u002FSKILL.md",true,[74,80],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fadvanced-usage.md","REFERENCE","参考文档",16953,"https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fmlops\u002Fmodels\u002Faudiocraft\u002Freferences\u002Fadvanced-usage.md",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Ftroubleshooting.md",11412,"https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fmlops\u002Fmodels\u002Faudiocraft\u002Freferences\u002Ftroubleshooting.md",[85,104,136,161,172,188],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":33},"01M6CB7RN791P5RRRCJWWC7DAR","blocked-page-recovery","Use when a fetch fails: 403\u002F429, paywall, WAF, bot wall.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fweb\u002Fblocked-page-recovery\u002FSKILL.md",[],[92,93,94,95,96,97,98,99,100,101,102,103,28,27,26],"recovery","page","blocked page recovery","bot","fallback","use","fetch","hermes agent","hermes","Citations","waf","windows",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":121,"publishedAt":33},"01M6CB7NQY2VVYCQJ1QBXACQF4","writing-plans","Use when creating or updating executable software plans. Keep plans as local files unless the user explicitly asks to register them in Doct.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[110,113,116],{"categoryNo":111,"categoryName":112,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":117,"categoryName":118,"taxonomyType":119,"taxonomyTypeDesc":120},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[122,123,124,125,126,127,128,129,130,131,132,133,97,134,99,100,135],"writing","writing plans","documentation","test","workflow","design","user","development","planning","files","implementation","html","ops","plan",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":151,"publishedAt":33},"01M6CB7JME246KZQHP73Z2STDF","test-driven-development","TDD: enforce RED-GREEN-REFACTOR, tests before code.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Ftest-driven-development\u002FSKILL.md",[142,145,148],{"categoryNo":143,"categoryName":144,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":146,"categoryName":147,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":149,"categoryName":150,"taxonomyType":119,"taxonomyTypeDesc":120},"01JBSEEDCAT000000000000037","律师与法务",[125,129,152,153,154,99,100,155,135,156,157,158,26,159,27,160,103],"test driven development","red-green-refactor","superpowers","quality","refactor","code","debugging","tdd","testing",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":168,"publishedAt":33},"01M6CB7FQ407KQTD4Z9VAWKY54","systematic-debugging","4-phase root cause debugging: understand bugs before fixing.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[167],{"categoryNo":146,"categoryName":147,"taxonomyType":21,"taxonomyTypeDesc":22},[158,169,129,154,99,100,170,135,171,103,125,27,26],"systematic debugging","troubleshooting","investigation",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":181,"publishedAt":33},"01M6CB7D57MK88HE5YPZHKH68Q","spike","Throwaway experiments to validate an idea before build.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fspike\u002FSKILL.md",[178],{"categoryNo":179,"categoryName":180,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[174,103,182,183,28,184,27,26,185,186,187,99,100,135,130],"validate","experiments","prototype","feasibility","sketch","experiment",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":198,"publishedAt":33},"01M6CB7APAQ37YE5YE1MAAFT42","simplify-code","Parallel 3-agent cleanup of recent code changes.","https:\u002F\u002Fgithub.com\u002Fadnichols\u002Fai-configs\u002Fblob\u002Fmain\u002F_hermes\u002Fdefault\u002Fskills\u002Fsoftware-development\u002Fsimplify-code\u002FSKILL.md",[194,195],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":196,"categoryName":197,"taxonomyType":119,"taxonomyTypeDesc":120},"01JBSEEDCAT000000000000030","开发工程师",[199,200,157,201,99,100,202,135,156,203,204,205,129,103,125,27,206,26],"simplify code","simplify","subagent","parallel","code-review","delegation","cleanup","review"]