Spaces:
Running
on
Zero
Running
on
Zero
| """ | |
| Example code for calling ACE-Music-Generator from another Hugging Face Space | |
| This shows how to use the ACE-Music-Generator API from your podcast space | |
| or any other Python application. | |
| """ | |
| from gradio_client import Client | |
| import tempfile | |
| import requests | |
| # Method 1: Using Gradio Client (Recommended for Spaces) | |
| def generate_music_from_space( | |
| duration=20, | |
| tags="edm, synth, bass, 128 bpm, energetic", | |
| lyrics="[instrumental]", | |
| space_name="ACloudCenter/ACE-Music-Generator" | |
| ): | |
| """ | |
| Generate music using the ACE-Music-Generator space API | |
| Args: | |
| duration: Duration in seconds | |
| tags: Music style tags | |
| lyrics: Lyrics or [instrumental] | |
| space_name: Your Hugging Face space name | |
| Returns: | |
| audio_file_path: Path to downloaded audio file | |
| """ | |
| try: | |
| # Connect to your space | |
| client = Client(space_name) | |
| # Call the generate function | |
| result = client.predict( | |
| duration, | |
| tags, | |
| lyrics, | |
| 60, # infer_steps | |
| 15.0, # guidance_scale | |
| api_name="/generate" | |
| ) | |
| # Result is the path to the audio file | |
| return result | |
| except Exception as e: | |
| print(f"Error generating music: {e}") | |
| return None | |
| # Method 2: Direct HTTP API call | |
| def generate_music_http( | |
| duration=20, | |
| tags="edm, synth, bass, 128 bpm, energetic", | |
| lyrics="[instrumental]", | |
| space_url="https://acloudcenter-ace-music-generator.hf.space" | |
| ): | |
| """ | |
| Generate music using direct HTTP API call | |
| Args: | |
| duration: Duration in seconds | |
| tags: Music style tags | |
| lyrics: Lyrics or [instrumental] | |
| space_url: Your space URL | |
| Returns: | |
| audio_file_path: Path to downloaded audio file | |
| """ | |
| import json | |
| api_url = f"{space_url}/run/generate" | |
| payload = { | |
| "data": [ | |
| duration, | |
| tags, | |
| lyrics, | |
| 60, # infer_steps | |
| 15.0, # guidance_scale | |
| ] | |
| } | |
| try: | |
| # Make the API call | |
| response = requests.post(api_url, json=payload) | |
| if response.status_code == 200: | |
| result = response.json() | |
| # Download the audio file | |
| audio_url = result["data"][0]["url"] | |
| # Save to temp file | |
| with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as f: | |
| audio_response = requests.get(audio_url) | |
| f.write(audio_response.content) | |
| return f.name | |
| else: | |
| print(f"Error: {response.status_code}") | |
| return None | |
| except Exception as e: | |
| print(f"Error generating music: {e}") | |
| return None | |
| # Example usage in your podcast generator | |
| def add_background_music_to_podcast(): | |
| """ | |
| Example of how to use in your podcast space | |
| """ | |
| # Generate a 20-second EDM track | |
| music_path = generate_music_from_space( | |
| duration=20, | |
| tags="edm, ambient, soft, background, 100 bpm, calm", | |
| lyrics="[instrumental]" | |
| ) | |
| if music_path: | |
| print(f"Generated music saved to: {music_path}") | |
| # Now you can use this in your podcast generation | |
| # For example, mix it with your podcast audio | |
| return music_path | |
| else: | |
| print("Failed to generate music") | |
| return None | |
| # Different music styles you can generate | |
| MUSIC_STYLES = { | |
| "podcast_intro": "upbeat, electronic, professional, 120 bpm, energetic, modern", | |
| "podcast_outro": "calm, ambient, soft, 80 bpm, relaxing, fade out", | |
| "news_background": "minimal, electronic, subtle, 90 bpm, serious, professional", | |
| "commercial": "pop, upbeat, catchy, 128 bpm, happy, commercial", | |
| "dramatic": "orchestral, dramatic, cinematic, 100 bpm, intense, emotional", | |
| "tech": "electronic, futuristic, synth, 110 bpm, innovative, modern", | |
| "chill": "lofi, relaxed, warm, 75 bpm, cozy, background", | |
| } | |
| def generate_podcast_music(style="podcast_intro", duration=15): | |
| """ | |
| Generate music for different podcast segments | |
| Args: | |
| style: One of the predefined styles | |
| duration: Duration in seconds | |
| Returns: | |
| audio_file_path: Path to generated audio | |
| """ | |
| tags = MUSIC_STYLES.get(style, MUSIC_STYLES["podcast_intro"]) | |
| return generate_music_from_space( | |
| duration=duration, | |
| tags=tags, | |
| lyrics="[instrumental]" | |
| ) | |
| if __name__ == "__main__": | |
| # Test the API | |
| print("Generating test music...") | |
| audio_file = generate_podcast_music(style="podcast_intro", duration=10) | |
| if audio_file: | |
| print(f"Success! Audio saved to: {audio_file}") | |
| else: | |
| print("Failed to generate audio") |