Dans le monde au rythme rapide d'aujourd'hui, rester informé est crucial, mais trouver le temps de lire de longs articles de presse peut être difficile. De plus, la consommation de nouvelles dans sa langue maternelle améliore la compréhension et l'engagement. Entrez Newsvoiceai, une application innovante conçue pour révolutionner la façon dont nous accéderons aux nouvelles. En exploitant le pouvoir de l'intelligence artificielle, Newsvoiceai transforme les articles de presse anglais en direct en résumés audio punjabi concis, ce qui facilite le fait de rester à jour lors de vos déplacements.
Dans cet article complet, nous nous plongerons dans le fonctionnement de Newsvoiceai, explorer les technologies de pointe derrière elle, fournir un guide étape par étape sur la façon de créer une application similaire et intégrer le code réel qui donne vie à cette application.
Cet article a été publié dans le cadre du Blogathon de la science des données.
Imaginez rattraper les dernières nouvelles de votre trajet du matin sans avoir à lire de longs articles ou à lutter contre les barrières linguistiques. Newsvoice est né du désir de rendre les nouvelles plus accessibles, en particulier pour les publics de langue punjabi qui préfèrent consommer du contenu dans leur langue maternelle. L'application comble plusieurs lacunes:
Que vous soyez un professionnel occupé, un navetteur ou une personne ayant des déficiences visuelles, Newsvoiceai offre un moyen transparent de rester informé.
Explorons le flux de travail étape par étape de NewsVoice, intégrant des extraits de code pour illustrer chaque pièce.
En utilisant l'API Guardian, Newsvoiceai récupère les meilleurs articles de presse en direct en fonction de critères prédéfinis ou de préférences utilisateur.
# Fonction pour récupérer les articles de l'information de l'API Guardian def fetch_news (api_key): De The Guardian Import theguardian_content contenu = theguardian_content.content (api = api_key) json_content = content.get_content_response () essayer: return content.get_results (json_content) sauf Keyerror comme e: St.Error (f "Erreur récupérant les articles: {e}") retour []
Explication:
Pour chaque article, nous récupérons le contenu complet pour le préparer à un résumé.
# Fonction pour récupérer le contenu de l'article def fetch_article_content (article_url, api_key): Response = reques.get (article_url, params = {"api-key": api_key, "show-blocks": "all"}) Si réponse.status_code == 200: Article_data = réponse.json () body = article_data.get ("réponse", {}). get ("contenu", {}). get ("blocks", {}). get ("body", []) Si le corps: return "" .join (block.get ("bodytextsummary", "") pour le bloc dans le corps) Renvoie aucun
Explication:
Nous utilisons les modèles GPT d'OpenAI pour résumer l'article, puis traduisons le résumé en punjabi.
# Fonction pour résumer et traduire du contenu à l'aide de l'API OpenAI def résume_and_translate (contenu, api_key): Importer Openai openai.api_key = api_key # Invite de résumé Summary_Response = Openai.ChatCompletion.Create ( modèle = "gpt-4", messages = [ {"rôle": "système", "contenu": "Vous êtes un assistant utile qui résume de manière concise les articles de presse."}, {"rôle": "utilisateur", "contenu": f "Résumez l'article suivant Contenu en 2-3 phrases: \ n \ n {contenu}"} ], max_tokens = 100 ) résumé = résumé_response.choices [0] .Message.Content.strip () # Invite de traduction traduction_response = openai.chatcompletion.create ( modèle = "gpt-3.5-turbo", messages = [ {"rôle": "système", "contenu": "Vous êtes un traducteur professionnel spécialisé dans les traductions anglaises aux punjabi."}, {"rôle": "utilisateur", "contenu": f "traduire le texte suivant en punjabi: \ n \ n {résumé}"} ], max_tokens = 150 ) traduction = traduction_response.choices [0] .Message.Content.strip () Résumé de retour, traduction
Explication:
Le texte traduit est converti en audio à l'aide de l'API SARVAM TTS.
# Fonction pour convertir le texte punjabi en discours en utilisant l'API Sarvam TTS def punjabi_text_to_speech (punjabi_text, sarvam_api_key): url = "https://api.sarvam.ai/text-to-steech" # Diviser le texte en morceaux de 500 caractères chunks = [punjabi_text [i: i 500] pour i dans la plage (0, len (punjabi_text), 500)]] Audio_clips = [] Pour moi, Chunk en énumération (morceaux): charge utile = { "Entrées": [Chunk], "cible_language_code": "pa-in", "Speaker": "Meera", "pitch": 0, "rythme": 1.0, "Houdness": 1.2, "Speech_sample_rate": 8000, "activer_preprocessing": true, "Modèle": "Bulbul: V1" } en-têtes = { "Contenu-type": "application / json", "API-Subscription-Key": Sarvam_API_KEY } Response = requers.Post (URL, en-têtes = en-têtes, JSON = charge utile) Si réponse.status_code == 200: Audio_base64 = réponse.json (). get ("Audios") Si Audio_Base64 et Len (Audio_Base64)> 0: Audio_clips.append (Audio_Base64 [0]) autre: St.Error (f "Audio trouvé en réponse pour Chunk {i 1}.") Renvoie aucun autre: St.Error (f "n'a pas réussi à convertir Chunk {i 1} en discours: {réponse.status_code} - {réponse.Text}") Renvoie aucun # Combiner tous les morceaux audio Base64 en une seule chaîne return "" .join (audio_clips)
Explication:
L'interface utilisateur est construite à l'aide de Streamlit, offrant une expérience interactive.
# Application de rationalisation principale def main (): St.Set_Page_Config ( page_title = "newsvoice: résumés de nouvelles multilingues", page_icon = "?" disposition = "large" ) # CSS personnalisé pour un style amélioré St.markdown ("" " <style> .main-title { taille de police: 36px; Couleur: # 2C3E50; Texte-aligne: Centre; marge-fond: 30px; } . Couleur: # 3498db; Border-Bottom: 2px Solid # 3498DB; Padding-Bottom: 10px; } </ style> "" ", disfe_allow_html = true) # Titre de l'application St.Markdown ('<h1>? Newsvoice: Résumé des nouvelles multilingues ', disfe_allow_html = true) # Barre latérale pour la configuration St.sidebar.header ("Configuration des nouvelles") num_articles = st.sidebar.slider ("nombre d'articles", 1, 5, 3) # Zone de contenu principale St.Markdown ('<h2> Dernier résumé des nouvelles ', disAve_Allow_html = true) # Bouton de récupération et de processus Si St.Button ("Fetch & Translate News"): Avec St.Spinner ("Fetching and Processing News ..."): # Recherchez des articles Articles = fetch_news (Guardian_API_KEY) Si ce n'est pas des articles: St.Warning ("Aucun article trouvé. Veuillez réessayer.") autre: # Process Top Nombre sélectionné d'articles pour un article dans des articles [: num_articles]: anglais_title = article.get ('webtitle', 'pas de titre disponible') Article_url = article.get ('apiUrl') # Créer un conteneur pour chaque article avec saint-contraire (): St.Subheader (English_title) # Recherchez le contenu de l'article Article_content = fetch_article_content (article_url, gardien_api_key) si article_url autre Si ce n'est pas l'article_content: St.Write ("Aucun contenu disponible pour cet article.") continuer essayer: # Résumer et traduire Résumé, punjabi_translation = résumer_and_translate (article_content, openai_api_key) # Afficher le résumé de l'anglais St.markdown ("** Résumé de l'anglais: **") St.Write (résumé) # Afficher la traduction punjabi St.markdown ("** Traduction punjabi: **") St.Write (punjabi_translation) # Text-the-dispeech St.Write ("Génération de l'audio punjabi ...") Audio_base64 = punjabi_text_to_speech (punjabi_translation, sarvam_api_key) Si Audio_Base64: Audio_bytes = base64.b64decode (Audio_Base64) St.Audio (Audio_Bytes, Format = "Audio / Wav") # Ajouter un diviseur entre les articles St.markdown ("---") sauf exception comme e: St.Error (F "Article de traitement des erreurs: {e}") # Pied-de-pied St.markdown ("" " --- Propulsé par l'API Guardian, Openai et Sarvam TTS "" ") # Exécutez l'application Streamlit Si __name__ == "__main__": principal()</style>
Explication:
Consultez la qualité de l'audio dans l'enregistrement téléchargé dans la lecture de ce référentiel - Newsvoiceai
Pour construire et exécuter avec succès NewsVoice, vous devrez obtenir des clés API à partir des services suivants:
Vous trouverez ci-dessous des guides étape par étape sur la façon d'acquérir ces clés d'API.
Le Guardian fournit une API gratuite qui permet aux développeurs d'accéder au contenu à partir de leur vaste référentiel d'articles de presse.
OpenAI propose des modèles de langage puissants comme GPT-4O et d'autres, qui sont utilisés pour la résumé de texte et la traduction dans Newsvoiceai.
Informations de facturation:
SARVAM AI fournit des services de texte à disposition prenant en charge plusieurs langues indiennes, y compris le Punjabi avec environ 1 000 ₹ de crédits gratuits. En faire bon usage!
Discutons maintenant des technologies derrière Newsvoice ci-dessous:
L'API Guardian donne accès à une multitude d'articles de presse en direct et de métadonnées. En intégrant cette API, NewsVoice garantit que les utilisateurs reçoivent le contenu d'actualité le plus récent et le plus pertinent.
Newsvoiceai exploite les puissants modèles de langage multilingue d'Openai pour gérer à la fois les tâches de résumé et de traduction.
Pour convertir le texte traduit en discours, Newsvoiceai utilise des API TTS avancées qui soutiennent Punjabi.
Streamlit est un framework d'applications open source utilisé pour créer l'interface Web interactive pour NewsVoice.
Newsvoiceai représente une étape importante vers la réalisation de nouvelles plus accessibles et adaptées aux besoins individuels. En intégrant les technologies avancées d'IA d'OpenAI et en tirant parti des sources d'information fiables comme The Guardian, l'application transforme la façon dont nous consommons les nouvelles:
Alors que la technologie continue d'évoluer, des applications comme Newsvoice joueront un rôle crucial dans la démocratisation de l'accès à l'information.
Essayez-le aujourd'hui: le référentiel Newsvoice Github
A. Newsvoiceai est une application alimentée par AI qui transforme les articles de presse anglais en live en résumés audio punjabi concis. Il profite aux utilisateurs en prenant du temps, en brisant les barrières linguistiques et en fournissant un moyen mains libres accessible de consommer des nouvelles.
Q2. Ai-je besoin d'une expertise technique pour utiliser NewsVoice?A. Aucune expertise technique n'est requise pour utiliser l'application comme utilisateur final. Vous pouvez simplement interagir avec l'interface conviviale pour récupérer, lire et écouter des résumés d'actualités. Cependant, si vous souhaitez créer ou personnaliser l'application, la connaissance de base de l'intégration Python et API serait utile.
Q3. Newsvoiceai est-il gratuit?A. L'application Newsvoiceai elle-même est ouverte et libre à utiliser. Cependant, l'accès à certaines API comme Openai et Sarvam TTS peut impliquer des coûts, en particulier au-delà de leurs niveaux d'utilisation gratuits. Il est important de revoir les détails de tarification de chaque service API que vous prévoyez d'utiliser. Bien que, si vous prévoyez de l'utiliser localement, vous pouvez utiliser les LLM open source à l'aide d'Olllama.
Q4. Quelle est la précision des traductions et des résumés?A. Newsvoiceai utilise des modèles d'IA avancés d'OpenAI, connus pour leur grande précision dans les tâches linguistiques. Bien que les traductions et les résumés soient généralement fiables, ils peuvent ne pas être parfaits en raison des nuances du traitement du langage. Les commentaires sont les bienvenus pour aider à améliorer les futures versions.
Q5. Puis-je personnaliser le nombre d'articles ou sélectionner des sujets d'information spécifiques?R. Oui, l'application vous permet de sélectionner le nombre d'articles à récupérer via le curseur de la barre latérale. Actuellement, la sélection des sujets n'est pas disponible, mais les améliorations futures peuvent inclure la possibilité de filtrer les actualités par des catégories ou des mots clés.
Les médias présentés dans cet article ne sont pas détenus par l'analytique vidhya et sont utilisés à la discrétion de l'auteur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!