Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import random | |
| from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
| author_set = {'Leopoldo Lugones', 'Nacho Buzón', 'Octavio Paz', 'Luis Cañizal de la Fuente', 'Juan de Salinas', 'Vicente Huidobro', 'Hilario Barrero', | |
| 'Ramón de Campoamor', 'Anna Ajmátova', 'Víctor Hugo López Cancino', 'Ramón María del Valle-Inclán', 'Infantiles', 'Jorge Luis Borges', | |
| 'Carlos Bousoño', 'Gonzalo Rojas', 'Juan Ruiz, Arcipreste de Hita', 'Rubén Izaguirre Fiallos', 'Juan Meléndez Valdés', | |
| 'José María de Heredia', 'Jaime Sabines', 'Alejandra Pizarnik', 'María Cristina Azcona', 'Guillermo Aguirre y Fierro', | |
| 'Miguel Ramos Carrión', 'José de Espronceda', 'Juan del Encina', 'Jorge Guillén', 'Manuel Machado', 'José Santos Chocano', 'Meira Delmar', | |
| 'Iván Tubau', 'Tirso de Molina', 'Oliverio Girondo', 'Justo Braga', 'Consuelo Hernández', 'Belén Reyes', 'Pablo Neruda', | |
| 'Francisco de Aldana', 'Bertolt Brecht', 'José Antonio Labordeta', 'Emilio Prados', 'Porfirio Barba Jacob', 'Leopoldo Marechal', | |
| 'Aurelio González Ovies', 'Darío Jaramillo Agudelo', 'Víctor Botas', 'Leopoldo María Panero', 'Juan de Mena', 'Tomás de Iriarte', | |
| 'Gabriela Mistral', 'Gonzalo de Berceo', 'Antonio Machado', 'Santiago Montobbio', 'Pedro Calderón de la Barca', 'Dionisio Ridruejo', | |
| 'Atahualpa Yupanqui', 'Nicolás Guillén', 'Claudio Rodríguez', 'José María Blanco White', 'Gil Vicente', 'Corina Bruni', 'Gabriel Celaya', | |
| 'Javier Alvarado', 'Rosalía de Castro', 'Gustavo Pereira', 'Miguel de Cervantes y Saavedra', 'Jorge Riechmann', 'José Juan Tablada', | |
| 'Lope de Vega', 'Basilio Sánchez', 'Alfonso X el sabio', 'Rafael de León', 'Eunice Odio', 'Manuel Acuña', 'Víctor Jiménez', | |
| 'José Asunción Silva', 'Omar García Ramírez', 'Luis Cernuda', 'perdón', 'Blas de Otero', 'Luis Benítez', 'Ángeles Carbajal', | |
| 'Manuel Bretón de los Herreros', 'Baldomero Fernández Moreno', 'Luis Barahona de Soto', 'Guillermo Valencia', 'José María Hinojosa', | |
| 'Macedonio Fernández', 'Manuel Gutiérrez Nájera', 'Alfredo Buxán', 'Salvador Novo', 'José Ángel Valente', 'José Cadalso', | |
| 'Juan Ramón Mansilla', 'Ana Istarú', 'Juan Ramón Jiménez', 'Miguel Ángel Asturias', 'Ángel González', 'amistad', 'Alfredo Lavergne', | |
| 'Xavier Villaurrutia', 'René Chacón Linares', 'Carolina Coronado', 'Bartolomé Leonardo de Argensola', 'Marilina Rébora', | |
| 'Vicente Aleixandre', 'Alberto Girri', 'Juana de Ibarbourou', 'Ricardo Dávila Díaz Flores', 'Garcilaso de la Vega', | |
| 'Lupercio Leonardo de Argensola', 'Enrique Lihn', 'Julia de Burgos', 'Mariano Brull', 'Efraín Huerta', 'Roxana Popelka', | |
| 'Pelayo Fueyo', 'San Juan de la Cruz', 'Vicente García', 'Basilio Fernández', 'Paz Díez Taboada', 'cristianos', 'León Felipe', | |
| 'Diana Bellessi', 'Genaro Ortega Gutiérrez', 'Cristóbal de Castillejo', 'Gioconda Belli', 'Iacyr Anderson Freitas', | |
| 'Juan José Vélez Otero', 'Ezequiel Martínez Estrada', 'Juan de Arguijo', 'Gertrudis Gómez de Avellaneda', 'Marcos Rafael Blanco Belmonte', | |
| 'Julio Aumente', 'Ramón López Velarde', 'para la familia', 'Antonia Álvarez Álvarez', 'José Zorrilla', 'Juan Luis Panero', | |
| 'Teresa Palazzo Conti', 'Claribel Alegría', 'Francisco de Medrano', 'Antonio Colinas', 'Jordi Doce', 'Ismael Enrique Arciniegas', | |
| 'Josefina Plá', 'José Agustín Goytisolo', 'Blanca Andreu', 'Enrique González Martínez', 'José García Nieto', 'Ernesto Cardenal', | |
| 'Pedro Luis Menéndez', 'Carmen Conde Abellán', 'Salvador Rueda', 'Dulce María Loynaz', 'Odette Alonso', 'Manuel Altolaguirre', | |
| 'Byron Espinoza', 'Francisco Álvarez', 'Vicente Gerbasi', 'César Vallejo', 'Gloria Fuertes', 'Sor Juana Inés de la Cruz', | |
| 'Francisco de la Torre', 'Francisco Matos Paoli', 'Rubén Darío', 'Rafael Pombo', 'Mara Romero', 'José Albi', 'Francisco de Quevedo', | |
| 'Juan de Dios Peza', 'Leopoldo Panero', 'Fernando de Herrera', 'Victoriano Crémer', 'Ana Rossetti', 'Gabriel García Márquez', | |
| 'Teresa Domingo Català', 'Melchor de Palau', 'Miguel Rasch Isla', 'Luis Antonio de Villena', 'Mario Benedetti', 'Ramón Pérez de Ayala', | |
| 'Antonio Plaza Llamas', 'David Escobar Galindo', 'Mario Meléndez', 'José Gorostiza', 'Delfina Acosta', 'en español', 'Delmira Agustini', | |
| 'José Luis Piquero', 'Baltasar del Alcázar', 'Nimia Vicéns', 'Rafael Alberti', 'María Eugenia Caseiro', 'Nicomedes Santa Cruz', | |
| 'Carlos Pellicer', 'Luis de Góngora', 'Manuel Alcántara', 'Toni García Arias', 'Antonio Fernández Lera', 'José María Pemán', | |
| 'Dina Posada', 'Gaspar Melchor de Jovellanos', 'Alfonso Reyes', 'José María Gabriel y Galán', 'Manuel José Othón', 'Luciano Castañón', | |
| 'Luis Alberto de Cuenca', 'Andrés Eloy Blanco', 'Luis Antonio Chávez', 'Pedro Salinas', 'Luis Palés Matos', 'Álvaro García', | |
| 'Pablo de Rokha', 'Dámaso Alonso', 'Luis Álvarez Piner', 'Salvador García Ramírez', 'Roque Dalton', 'Gerardo Diego', | |
| 'Felipe Benítez Reyes', 'William Shakespeare', 'José Ángel Buesa', 'Miguel Florián', 'Luis Gonzaga Urbina', 'Jesús Hilario Tundidor', | |
| 'Amado Nervo', 'Miguel Hernández', 'Federico García Lorca', 'José Martí', 'Oscar Ferreiro', 'Pedro Miguel Lamet', 'Fray Luis de León', | |
| 'Julio Flórez Roa', 'León de Greiff', 'Gustavo Adolfo Bécquer', 'Carlos Edmundo de Ory', 'Miguel de Unamuno', 'Manuel del Cabral', | |
| 'Oscar Acosta', 'José Lezama Lima', 'Hernando de Acuña', 'Ángel García Aller', 'Salvador Díaz Mirón', 'Ricardo Molinari', | |
| 'Julio Herrera y Reissig', 'Francisco Luis Bernárdez', 'Fa Claes', 'Jorge Debravo', 'Francisco de Figueroa', 'Marqués de Santillana', | |
| 'Eugenio Florit', 'José Gautier Benítez', 'Óscar Hahn', 'Andrés Bello', 'Santa Teresa de Jesús, Sánchez de Cep', 'Juan Liscano', | |
| 'Jorge Teillier', 'Félix María de Samaniego', 'Nicolás Fernández de Moratín', 'Juan Boscán', 'Manuel María Flores', 'Gutierre de Cetina', | |
| 'Alfonsina Storni', 'José Luis Rey Cano', 'Jorge Manrique', 'Nicanor Parra'} | |
| model_name = 'hackathon-pln-es/poem-gen-spanish-t5-small' | |
| tokenizer = AutoTokenizer.from_pretrained(model_name) | |
| model = AutoModelForSeq2SeqLM.from_pretrained(model_name) | |
| def make_poem(author, sentiment, words, text): | |
| num_lines=5 | |
| poem = text | |
| prev_output = '' | |
| l_words = [x.strip() for x in words.split(',')] | |
| # Add empty strings to words | |
| if num_lines > len(l_words): | |
| diff = num_lines - len(l_words) | |
| l_words += [''] * diff | |
| random.shuffle(l_words) | |
| for i in range(num_lines): | |
| word = l_words[i] | |
| if word == '': | |
| input_text = f"""poema: estilo: {author} && sentimiento: {sentiment} && texto: {poem} """ | |
| else: | |
| input_text = f"""poema: estilo: {author} && sentimiento: {sentiment} && palabras: {word} && texto: {poem} """ | |
| inputs = tokenizer(input_text, return_tensors="pt") | |
| outputs = model.generate(inputs["input_ids"], | |
| do_sample = True, | |
| max_length = 30, | |
| repetition_penalty = 20.0, | |
| top_k = 50, | |
| top_p = 0.92) | |
| detok_outputs = [tokenizer.decode(x, skip_special_tokens=True) for x in outputs] | |
| pre_output = detok_outputs[0] | |
| poem += '\n' + pre_output | |
| # audio = tts_es(poem) | |
| # return poem, audio | |
| return poem | |
| def poem_generate(author, sentiment, words, text): | |
| poem_txt = make_poem(author, sentiment, words, text) | |
| # Pending: Translate poem to English, so that text can be the input of the latentdiffussion | |
| poem_img = poem_to_image(poem_txt[-100:]) | |
| return poem_txt, poem_img | |
| def poem_to_image(poem): | |
| print(['poem_to_image', 'start']) | |
| poem = " ".join(poem.split('\n')) | |
| poem = poem + " oil on canvas." | |
| steps, width, height, images, diversity = '50', '256', '256', '1', 15 | |
| img = gr.Interface.load("spaces/multimodalart/latentdiffusion")(poem, | |
| steps, width, height, images, diversity)[0] | |
| print(['poem_to_image', 'end']) | |
| return img | |
| def debug_fn(*args): | |
| return ', '.join(args), 'salida dos' | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """This space is taking as a base the [Spanish Poem Generation](https://huggingface.co/spaces/hackathon-pln-es/poem-generation-es) created during the First Spanish Hackathon of NLP. | |
| A [t5-small](https://huggingface.co/hackathon-pln-es/poem-gen-spanish-t5-small) was trained with this [dataset](https://huggingface.co/datasets/hackathon-pln-es/spanish-poetry-dataset) of spanish poems. | |
| In this space you will be able to tune some parameters, to obtain a poem and an illustration 🎨 generated with Latent Diffusion Art space by [Multimodalart](https://huggingface.co/spaces/multimodalart/latentdiffusion). | |
| With ❤️ by [Alberto Carmona Barthelemy](https://huggingface.co/milyiyo) from 🇨🇺. | |
| """) | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_author = gr.Dropdown( | |
| sorted(author_set), type="value", label='Nombre del autor') | |
| input_sentiment = gr.Radio( | |
| ['positivo', 'negativo'], label='Sentimiento del texto generado') | |
| input_include_words = gr.Textbox( | |
| lines=1, placeholder='palabra_1, palabra_2, ..., palabra_n', label='Palabras que desea incluir') | |
| input_initial_text = gr.Textbox( | |
| lines=4, placeholder='texto inicial', label='Texto inicial') | |
| b1 = gr.Button("Generate Poem & Illustration") | |
| output_poem_txt = gr.Textbox(lines=7, label='Poema generado') | |
| output_image = gr.Image(type="filepath", shape=(256, 256)) | |
| b1.click(poem_generate, inputs=[input_author, input_sentiment, input_include_words, input_initial_text], outputs=[output_poem_txt, output_image]) | |
| demo.launch(enable_queue=True, debug=True) | |