t5-spotify-features / example_usage.py
afsagag's picture
Add example usage script
9d74db1 verified
Raw History Blame Contribute Delete
1.83 kB
"""
Example script for using the T5 Spotify Features model
"""
from transformers import T5ForConditionalGeneration, T5Tokenizer
import json
def predict_spotify_features(prompt_text, model_name="afsagag/t5-spotify-features"):
"""
Generate Spotify audio features from a text prompt
Args:
prompt_text (str): Natural language description of music preferences
model_name (str): Hugging Face model name
Returns:
dict: Spotify audio features or None if JSON parsing fails
"""
# Load model and tokenizer
model = T5ForConditionalGeneration.from_pretrained(model_name)
tokenizer = T5Tokenizer.from_pretrained(model_name)
# Format input
input_text = f"prompt: {prompt_text}"
# Tokenize and generate
input_ids = tokenizer(input_text, return_tensors="pt", max_length=256, truncation=True).input_ids
outputs = model.generate(
input_ids,
max_length=256,
num_beams=4,
early_stopping=True,
do_sample=False
)
# Decode and clean result
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
cleaned_result = result.replace("ll", "null").replace("nu", "null")
try:
return json.loads(cleaned_result)
except json.JSONDecodeError:
print(f"Failed to parse JSON: {cleaned_result}")
return None
if __name__ == "__main__":
# Example prompts
test_prompts = [
"I want energetic dance music",
"Play some calm acoustic songs",
"Upbeat pop music for working out",
"Sad slow songs for rainy days"
]
for prompt in test_prompts:
print(f"\nPrompt: {prompt}")
features = predict_spotify_features(prompt)
if features:
print(f"Features: {json.dumps(features, indent=2)}")