[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AEVMN43CHVQDX3WZVC2Z5":3,"skill-same:01M71AEVMN43CHVQDX3WZVC2Z5":89},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":14,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":64,"install":65,"resources":78},"01M71AEVMN43CHVQDX3WZVC2Z5","audiocraft-audio-generation",null,"PyTorch library for audio generation including text-to-music (MusicGen) and text-to-sound (AudioGen). Use when you need to generate music from text descriptions, create sound effects, or perform melody-conditioned music generation.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Faudiocraft\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"Audio","audiocraft","audiocraft audio generation","generation","Audio Generation","when","pytorch","effects","audiogen","you","music generation","Text-to-Audio","Text-to-Music","text","music","Transformers","library","multimodal","generate","create","2026-11-10 10:12:30",false,"---\nname: audiocraft-audio-generation\ndescription: PyTorch library for audio generation including text-to-music (MusicGen) and text-to-sound (AudioGen). Use when you need to generate music from text descriptions, create sound effects, or perform melody-conditioned music generation.\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ndependencies: [audiocraft, torch>=2.0.0, transformers>=4.30.0]\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":49,"license":15,"version":50,"metadata":51,"description":7,"dependencies":56},"Orchestra Research","1.0.0",{"hermes":52},{"tags":53},[54,28,36,35,55],"Multimodal","MusicGen",[25,57,58],"torch>=2.0.0","transformers>=4.30.0","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fhermes\u002Faudiocraft","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill audiocraft-audio-generation",{"tool":71,"command":72},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill audiocraft-audio-generation",{"tool":74,"command":75},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill audiocraft-audio-generation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Faudiocraft\u002FSKILL.md",true,[79,85],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fadvanced-usage.md","REFERENCE","参考文档",16953,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Faudiocraft\u002Freferences\u002Fadvanced-usage.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Ftroubleshooting.md",11412,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Faudiocraft\u002Freferences\u002Ftroubleshooting.md",[90,114,139,149,162,178],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":101,"publishedAt":44},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[96],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[102,103,104,105,106,107,108,109,110,111,112,113],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":44},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[121,122,123,124,125,126,104,127,128,129,130,29,131,132,133,134,135,136,137,138],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","brew","live","data","google","install","read","across","api",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":44},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[146,147,121,131,132,133,134,125,104,136,148,137,138,29,129,128,127,135,126,124],"trend radar","radar","pulse",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":44},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[156,157,158,159,160,161],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":171,"publishedAt":44},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[168],{"categoryNo":169,"categoryName":170,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[164,110,24,172,173,113,131,174,175,176,123,177,135],"cli","youtube","images","https","files","pdfs",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":44},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[180,185,186,187,135,188,175,189,190,191,192,193],"status","play","go","latest","github","discover","control","cmd","volume"]