Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Read by thought-leaders and decision-makers around the world. Phone Number: +1-650-246-9381 Email: pub@towardsai.net
228 Park Avenue South New York, NY 10003 United States
Website: Publisher: https://towardsai.net/#publisher Diversity Policy: https://towardsai.net/about Ethics Policy: https://towardsai.net/about Masthead: https://towardsai.net/about
Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Founders: Roberto Iriondo, , Job Title: Co-founder and Advisor Works for: Towards AI, Inc. Follow Roberto: X, LinkedIn, GitHub, Google Scholar, Towards AI Profile, Medium, ML@CMU, FreeCodeCamp, Crunchbase, Bloomberg, Roberto Iriondo, Generative AI Lab, Generative AI Lab Denis Piffaretti, Job Title: Co-founder Works for: Towards AI, Inc. Louie Peters, Job Title: Co-founder Works for: Towards AI, Inc. Louis-François Bouchard, Job Title: Co-founder Works for: Towards AI, Inc. Cover:
Towards AI Cover
Logo:
Towards AI Logo
Areas Served: Worldwide Alternate Name: Towards AI, Inc. Alternate Name: Towards AI Co. Alternate Name: towards ai Alternate Name: towardsai Alternate Name: towards.ai Alternate Name: tai Alternate Name: toward ai Alternate Name: toward.ai Alternate Name: Towards AI, Inc. Alternate Name: towardsai.net Alternate Name: pub.towardsai.net
5 stars – based on 497 reviews

Frequently Used, Contextual References

TODO: Remember to copy unique IDs whenever it needs used. i.e., URL: 304b2e42315e

Resources

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

Publication

Beyond Prompting: How Voice Will Define the Future of AI
Latest   Machine Learning

Beyond Prompting: How Voice Will Define the Future of AI

Last Updated on January 3, 2025 by Editorial Team

Author(s): Yaksh Birla

Originally published on Towards AI.

Photo by Ivan Bandura on Unsplash

Remember when we thought the pinnacle of AI interaction was crafting the perfect text prompt? Well, buckle up all you “prompt engineers”, because we’re about to leap into a world where your AI assistant isn’t just reading between the lines — it’s speaking them out loud. And trust me, this isn’t your grandma’s Siri we’re talking about.

The Silent Revolution Gets Vocal

For the last 2–3 years, we’ve been hammering away at our keyboards, trying to coax the perfect response from our AI companions. Entire companies and jobs were created with the sole purpose of mastering “prompt engineering”. And don’t mistake me — it is very useful. AI systems still need a certain degree of structure to generate desired outputs, so prompt engineering is not going away anytime soon.

But let’s face it, typing is so last decade. People are impatient (I sure as hell am) and do not want to experiment with multiple different prompts to get what they want.

News flash: Most people aren’t wired to be prompt engineers. People are, as it turns out, wired to speak. And tech giants are catching on fast.

Therefore, the real revolution is happening right now, and it’s all about voice. It is a deliberate effort in abstracting away the need for prompt engineering and enabling more intuitive human-AI interactions and outputs. As Eric Schmidt, former CEO of Google, prophesizes:

The internet will disappear. There will be so many IP addresses, so many devices, sensors, things that you are wearing, things that you are interacting with, that you won’t even sense it. It will be part of your presence all the time. Imagine you walk into a room, and the room is dynamic. And with your permission, you are interacting with the things going on in the room.

Why Voice is the Future of AI Development and Human-AI Interaction

Photo by Andy Kelly on Unsplash

Voice interaction isn’t just a minor convenience — it’s a fundamental shift in human-AI interaction. Let’s break down why voice is the future:

  1. It’s Natural: We’ve been talking for millennia. It’s time our tech caught up.
  2. Context is King: Advanced AI can now grasp nuance, tone, and even sarcasm.
  3. Personalization on Steroids: Your AI will learn your quirks, preferences, and possibly even your mood.
  4. Multitasking Magic: Imagine planning a party while cooking dinner — all hands-free. Voice assistants will seamlessly manage smart devices and apps.
  5. Goodbye, Robotic Chats: Think less “computer interaction,” more “knowledgeable friend.”
  6. Accent Adaption: Accommodating different cultural nuances and offering global accessibility.

The Voice AI Arms Race: Who’s Leading the Charge?

The race to dominate the voice AI space is heating up, with tech giants and startups alike vying for supremacy:

Google

Google has recently launched Gemini Live, a new AI voice assistant focused on natural, free-flowing conversation. Key features include:

  • Ability to interrupt and change topics mid-conversation
  • Choice of 10 distinct voice models
  • Integration with Google’s productivity tools
  • Available on Android devices with a Gemini Advanced subscription

Google is positioning Gemini Live as a “sidekick in your pocket” capable of handling complex tasks and research. Here’s a video displaying just a sliver of Gemini’s voice capabilities:

Apple

Apple has not yet released a new voice AI assistant, but is taking a measured approach with a focus on privacy and security and a promise to overhaul Siri slowly, but surely. Recent efforts include:

  • Apple plans to market its new AI capabilities under the name “Apple Intelligence”.
  • On-device AI processing for enhanced privacy and scalability
  • Exploring integration of AI with iOS and macOS, allowing Siri to control individual app functions using voice commands for the first time.

Apple is expected to announce major AI updates, including potential voice AI advancements, at their upcoming events.

OpenAI

OpenAI has introduced Voice Mode for ChatGPT, pushing the boundaries of natural language and human-AI interactivity. Key features include:

  • OpenAI’s Voice Mode enables real-time, natural voice interactions with ChatGPT, allowing users to engage in back-and-forth dialogue and change topics seamlessly.
  • The system supports multiple languages and various accents, utilizing OpenAI’s Whisper for accurate speech recognition and transcription.
  • Voice Mode leverages GPT-4o, combining audio and text processing capabilities, and features human-like voice responses generated through a dedicated text-to-speech model.

Anthropic

Amazon has a $4 billion minority stake in Anthropic that will, no doubt, lend itself to the Amazon-Alexa ecosystem. This is still my best guess, but their approach could include:

  • The integration of Anthropic’s advanced language models could potentially improve Alexa’s natural language understanding and generation abilities.
  • Amazon’s various voice-enabled services, from shopping to customer support, could benefit from the advanced AI capabilities provided by Anthropic’s models.
  • New voice AI features: The collaboration might lead to the development of novel voice AI features that leverage Anthropic’s expertise in safe and steerable AI

Each of these companies brings unique strengths and approaches to the voice AI landscape, from Google’s data-driven insights to Apple’s privacy-focused on-device processing, and from OpenAI’s cutting-edge language models to Anthropic’s emphasis on ethical AI.

Try experimenting with different voice AI assistants to understand their strengths and weaknesses. This will help you choose the best one for your needs as they evolve.

Other Notable Mentions

  • Samsung Bixby: Samsung’s native voice assistant offering device control, task automation and natural language understanding.
  • Yandex Alice: Russian-language voice assistant offering integration with Yandex services and smart home devices.
  • IBM Watson Assistant: Enterprise-focused AI assistant for customer service and business applications customizable for specific industry needs.
  • Mycroft: Open-source voice assistant that can be customized and installed on various devices, including Raspberry Pi.
  • SoundHound Houndify: Voice AI platform that allows developers to add voice interaction to their products.
  • Huawei Celia: Integrated into Huawei devices as an alternative to Google Assistant.

The Multimodal Future: Beyond Voice

Photo by Katja Anokhina on Unsplash

While voice is leading the charge, the future of AI interaction is, of course, likely to be multimodal. If you start projecting out the next 5 — 10 years, we can easily imagine a future where AI can:

  • See: Interpret visual information and gestures.
  • Hear: Process and understand speech and environmental sounds.
  • Feel: Respond to touch inputs or even simulate tactile feedback.
  • Understand context: Combine all these inputs to grasp the full context of a situation.

Amy Stapleton, Senior Analyst at Opus Research, envisions a future where

The technologies of machine learning, speech recognition, and natural language understanding are reaching a nexus of capability. The end result is that we’ll soon have artificially intelligent assistants to help us in every aspect of our lives.

This multimodal approach will create more intuitive, responsive, and helpful AI assistants across all areas of life.

Ethical Considerations in Voice AI

Before we get too starry-eyed, let’s talk ethics. This voice-powered future comes with some serious questions:

  1. Privacy: Is convenience worth sacrificing personal space?
  2. Data Security: How do we protect sensitive voice data?
  3. Bias and Fairness: Will AI understand diverse accents and languages equally?
  4. Transparency: Should AI always disclose its non-human nature?
  5. Emotional Manipulation: As AI gets better at reading emotions, how do we prevent misuse?
  6. Dependency: Are we outsourcing too much of our thinking?

Sarah Jeong, deputy editor for The Verge, offers a prudent reminder:

Artificial intelligence is just a new tool, one that can be used for good and for bad purposes and one that comes with new dangers and downsides as well. We know already that although machine learning has huge potential, data sets with ingrained biases will produce biased results — garbage in, garbage out.

The Conversational Singularity: A New Human-AI Paradigm

Image generated by Author using FLUX.1

We’re heading towards what I call the “Conversational Singularity” — a point where AI becomes so adept at natural interaction that it fundamentally changes how we relate to technology and each other.

This isn’t just theoretical. We’re already seeing the beginnings of this with the rise of AI personas and “AI girlfriends/boyfriends.” Apps like Replika and Xiaoice are creating emotional bonds between humans and AI, blurring the lines between artificial and genuine connection.

The implications can vary dramatically:

1. Redefining Relationships: Will AI complement or replace human connections?

2. Cognitive Enhancement: Could conversing with AI make us smarter? You are who you spend your time with after all.

3. Cultural Shift: How will ubiquitous AI assistants change societal norms?

4. Philosophical Questions: As AI becomes indistinguishable from human conversation partners, how will it challenge our concepts of consciousness, intelligence, and even what it means to be human?

While the full realization of the Conversational Singularity may still be years away, its early stages are already here. The challenge now is to shape this future thoughtfully and ethically.

Finding Our Voice in the AI Chorus

As we stand on this precipice, one thing is crystal clear: the future of human-AI interaction will be profoundly conversational. We’re moving beyond prompt engineering into a world where our relationship with AI is defined by natural, voice-driven interaction.

This shift, as Microsoft CEO Satya Nadella astutely observes, is part of a larger digital transformation:

Digital technology, pervasively, is getting embedded in every place: every thing, every person, every walk of life is being fundamentally shaped by digital technology — it is happening in our homes, our work, our places of entertainment. It’s amazing to think of a world as a computer. I think that’s the right metaphor for us as we go forward.

Indeed, voice AI represents the next frontier in this digital evolution. Whether we end up with helpful but limited digital assistants or powerhouse AI agents capable of deep, meaningful dialogue and complex tasks remains to be seen. What’s certain is that this future is filled with immense potential, significant pitfalls, and more than a few surprises.

Are you ready to lend your voice to the future of AI? This isn’t just about adopting new technology; it’s about shaping the very nature of our interaction with artificial intelligence. The conversation is just beginning, and it promises to be one of the most crucial dialogues of our time.

Till next time.

Join thousands of data leaders on the AI newsletter. Join over 80,000 subscribers and keep up to date with the latest developments in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

Published via Towards AI

Feedback ↓

Sign Up for the Course
`; } else { console.error('Element with id="subscribe" not found within the page with class "home".'); } } }); // Remove duplicate text from articles /* Backup: 09/11/24 function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag elements.forEach(el => { const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 2) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); */ // Remove duplicate text from articles function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag // List of classes to be excluded const excludedClasses = ['medium-author', 'post-widget-title']; elements.forEach(el => { // Skip elements with any of the excluded classes if (excludedClasses.some(cls => el.classList.contains(cls))) { return; // Skip this element if it has any of the excluded classes } const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 10) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); //Remove unnecessary text in blog excerpts document.querySelectorAll('.blog p').forEach(function(paragraph) { // Replace the unwanted text pattern for each paragraph paragraph.innerHTML = paragraph.innerHTML .replace(/Author\(s\): [\w\s]+ Originally published on Towards AI\.?/g, '') // Removes 'Author(s): XYZ Originally published on Towards AI' .replace(/This member-only story is on us\. Upgrade to access all of Medium\./g, ''); // Removes 'This member-only story...' }); //Load ionic icons and cache them if ('localStorage' in window && window['localStorage'] !== null) { const cssLink = 'https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css'; const storedCss = localStorage.getItem('ionicons'); if (storedCss) { loadCSS(storedCss); } else { fetch(cssLink).then(response => response.text()).then(css => { localStorage.setItem('ionicons', css); loadCSS(css); }); } } function loadCSS(css) { const style = document.createElement('style'); style.innerHTML = css; document.head.appendChild(style); } //Remove elements from imported content automatically function removeStrongFromHeadings() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, h6, span'); elements.forEach(el => { const strongTags = el.querySelectorAll('strong'); strongTags.forEach(strongTag => { while (strongTag.firstChild) { strongTag.parentNode.insertBefore(strongTag.firstChild, strongTag); } strongTag.remove(); }); }); } removeStrongFromHeadings(); "use strict"; window.onload = () => { /* //This is an object for each category of subjects and in that there are kewords and link to the keywods let keywordsAndLinks = { //you can add more categories and define their keywords and add a link ds: { keywords: [ //you can add more keywords here they are detected and replaced with achor tag automatically 'data science', 'Data science', 'Data Science', 'data Science', 'DATA SCIENCE', ], //we will replace the linktext with the keyword later on in the code //you can easily change links for each category here //(include class="ml-link" and linktext) link: 'linktext', }, ml: { keywords: [ //Add more keywords 'machine learning', 'Machine learning', 'Machine Learning', 'machine Learning', 'MACHINE LEARNING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ai: { keywords: [ 'artificial intelligence', 'Artificial intelligence', 'Artificial Intelligence', 'artificial Intelligence', 'ARTIFICIAL INTELLIGENCE', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, nl: { keywords: [ 'NLP', 'nlp', 'natural language processing', 'Natural Language Processing', 'NATURAL LANGUAGE PROCESSING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, des: { keywords: [ 'data engineering services', 'Data Engineering Services', 'DATA ENGINEERING SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, td: { keywords: [ 'training data', 'Training Data', 'training Data', 'TRAINING DATA', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ias: { keywords: [ 'image annotation services', 'Image annotation services', 'image Annotation services', 'image annotation Services', 'Image Annotation Services', 'IMAGE ANNOTATION SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, l: { keywords: [ 'labeling', 'labelling', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, pbp: { keywords: [ 'previous blog posts', 'previous blog post', 'latest', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, mlc: { keywords: [ 'machine learning course', 'machine learning class', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, }; //Articles to skip let articleIdsToSkip = ['post-2651', 'post-3414', 'post-3540']; //keyword with its related achortag is recieved here along with article id function searchAndReplace(keyword, anchorTag, articleId) { //selects the h3 h4 and p tags that are inside of the article let content = document.querySelector(`#${articleId} .entry-content`); //replaces the "linktext" in achor tag with the keyword that will be searched and replaced let newLink = anchorTag.replace('linktext', keyword); //regular expression to search keyword var re = new RegExp('(' + keyword + ')', 'g'); //this replaces the keywords in h3 h4 and p tags content with achor tag content.innerHTML = content.innerHTML.replace(re, newLink); } function articleFilter(keyword, anchorTag) { //gets all the articles var articles = document.querySelectorAll('article'); //if its zero or less then there are no articles if (articles.length > 0) { for (let x = 0; x < articles.length; x++) { //articles to skip is an array in which there are ids of articles which should not get effected //if the current article's id is also in that array then do not call search and replace with its data if (!articleIdsToSkip.includes(articles[x].id)) { //search and replace is called on articles which should get effected searchAndReplace(keyword, anchorTag, articles[x].id, key); } else { console.log( `Cannot replace the keywords in article with id ${articles[x].id}` ); } } } else { console.log('No articles found.'); } } let key; //not part of script, added for (key in keywordsAndLinks) { //key is the object in keywords and links object i.e ds, ml, ai for (let i = 0; i < keywordsAndLinks[key].keywords.length; i++) { //keywordsAndLinks[key].keywords is the array of keywords for key (ds, ml, ai) //keywordsAndLinks[key].keywords[i] is the keyword and keywordsAndLinks[key].link is the link //keyword and link is sent to searchreplace where it is then replaced using regular expression and replace function articleFilter( keywordsAndLinks[key].keywords[i], keywordsAndLinks[key].link ); } } function cleanLinks() { // (making smal functions is for DRY) this function gets the links and only keeps the first 2 and from the rest removes the anchor tag and replaces it with its text function removeLinks(links) { if (links.length > 1) { for (let i = 2; i < links.length; i++) { links[i].outerHTML = links[i].textContent; } } } //arrays which will contain all the achor tags found with the class (ds-link, ml-link, ailink) in each article inserted using search and replace let dslinks; let mllinks; let ailinks; let nllinks; let deslinks; let tdlinks; let iaslinks; let llinks; let pbplinks; let mlclinks; const content = document.querySelectorAll('article'); //all articles content.forEach((c) => { //to skip the articles with specific ids if (!articleIdsToSkip.includes(c.id)) { //getting all the anchor tags in each article one by one dslinks = document.querySelectorAll(`#${c.id} .entry-content a.ds-link`); mllinks = document.querySelectorAll(`#${c.id} .entry-content a.ml-link`); ailinks = document.querySelectorAll(`#${c.id} .entry-content a.ai-link`); nllinks = document.querySelectorAll(`#${c.id} .entry-content a.ntrl-link`); deslinks = document.querySelectorAll(`#${c.id} .entry-content a.des-link`); tdlinks = document.querySelectorAll(`#${c.id} .entry-content a.td-link`); iaslinks = document.querySelectorAll(`#${c.id} .entry-content a.ias-link`); mlclinks = document.querySelectorAll(`#${c.id} .entry-content a.mlc-link`); llinks = document.querySelectorAll(`#${c.id} .entry-content a.l-link`); pbplinks = document.querySelectorAll(`#${c.id} .entry-content a.pbp-link`); //sending the anchor tags list of each article one by one to remove extra anchor tags removeLinks(dslinks); removeLinks(mllinks); removeLinks(ailinks); removeLinks(nllinks); removeLinks(deslinks); removeLinks(tdlinks); removeLinks(iaslinks); removeLinks(mlclinks); removeLinks(llinks); removeLinks(pbplinks); } }); } //To remove extra achor tags of each category (ds, ml, ai) and only have 2 of each category per article cleanLinks(); */ //Recommended Articles var ctaLinks = [ /* ' ' + '

Subscribe to our AI newsletter!

' + */ '

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

'+ '

Towards AI has published Building LLMs for Production—our 470+ page guide to mastering LLMs with practical projects and expert insights!

' + '
' + '' + '' + '

Note: Content contains the views of the contributing authors and not Towards AI.
Disclosure: This website may contain sponsored content and affiliate links.

' + 'Discover Your Dream AI Career at Towards AI Jobs' + '

Towards AI has built a jobs board tailored specifically to Machine Learning and Data Science Jobs and Skills. Our software searches for live AI jobs each hour, labels and categorises them and makes them easily searchable. Explore over 10,000 live jobs today with Towards AI Jobs!

' + '
' + '

🔥 Recommended Articles 🔥

' + 'Why Become an LLM Developer? Launching Towards AI’s New One-Stop Conversion Course'+ 'Testing Launchpad.sh: A Container-based GPU Cloud for Inference and Fine-tuning'+ 'The Top 13 AI-Powered CRM Platforms
' + 'Top 11 AI Call Center Software for 2024
' + 'Learn Prompting 101—Prompt Engineering Course
' + 'Explore Leading Cloud Providers for GPU-Powered LLM Training
' + 'Best AI Communities for Artificial Intelligence Enthusiasts
' + 'Best Workstations for Deep Learning
' + 'Best Laptops for Deep Learning
' + 'Best Machine Learning Books
' + 'Machine Learning Algorithms
' + 'Neural Networks Tutorial
' + 'Best Public Datasets for Machine Learning
' + 'Neural Network Types
' + 'NLP Tutorial
' + 'Best Data Science Books
' + 'Monte Carlo Simulation Tutorial
' + 'Recommender System Tutorial
' + 'Linear Algebra for Deep Learning Tutorial
' + 'Google Colab Introduction
' + 'Decision Trees in Machine Learning
' + 'Principal Component Analysis (PCA) Tutorial
' + 'Linear Regression from Zero to Hero
'+ '

', /* + '

Join thousands of data leaders on the AI newsletter. It’s free, we don’t spam, and we never share your email address. Keep up to date with the latest work in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

',*/ ]; var replaceText = { '': '', '': '', '
': '
' + ctaLinks + '
', }; Object.keys(replaceText).forEach((txtorig) => { //txtorig is the key in replacetext object const txtnew = replaceText[txtorig]; //txtnew is the value of the key in replacetext object let entryFooter = document.querySelector('article .entry-footer'); if (document.querySelectorAll('.single-post').length > 0) { //console.log('Article found.'); const text = entryFooter.innerHTML; entryFooter.innerHTML = text.replace(txtorig, txtnew); } else { // console.log('Article not found.'); //removing comment 09/04/24 } }); var css = document.createElement('style'); css.type = 'text/css'; css.innerHTML = '.post-tags { display:none !important } .article-cta a { font-size: 18px; }'; document.body.appendChild(css); //Extra //This function adds some accessibility needs to the site. function addAlly() { // In this function JQuery is replaced with vanilla javascript functions const imgCont = document.querySelector('.uw-imgcont'); imgCont.setAttribute('aria-label', 'AI news, latest developments'); imgCont.title = 'AI news, latest developments'; imgCont.rel = 'noopener'; document.querySelector('.page-mobile-menu-logo a').title = 'Towards AI Home'; document.querySelector('a.social-link').rel = 'noopener'; document.querySelector('a.uw-text').rel = 'noopener'; document.querySelector('a.uw-w-branding').rel = 'noopener'; document.querySelector('.blog h2.heading').innerHTML = 'Publication'; const popupSearch = document.querySelector$('a.btn-open-popup-search'); popupSearch.setAttribute('role', 'button'); popupSearch.title = 'Search'; const searchClose = document.querySelector('a.popup-search-close'); searchClose.setAttribute('role', 'button'); searchClose.title = 'Close search page'; // document // .querySelector('a.btn-open-popup-search') // .setAttribute( // 'href', // 'https://medium.com/towards-artificial-intelligence/search' // ); } // Add external attributes to 302 sticky and editorial links function extLink() { // Sticky 302 links, this fuction opens the link we send to Medium on a new tab and adds a "noopener" rel to them var stickyLinks = document.querySelectorAll('.grid-item.sticky a'); for (var i = 0; i < stickyLinks.length; i++) { /* stickyLinks[i].setAttribute('target', '_blank'); stickyLinks[i].setAttribute('rel', 'noopener'); */ } // Editorial 302 links, same here var editLinks = document.querySelectorAll( '.grid-item.category-editorial a' ); for (var i = 0; i < editLinks.length; i++) { editLinks[i].setAttribute('target', '_blank'); editLinks[i].setAttribute('rel', 'noopener'); } } // Add current year to copyright notices document.getElementById( 'js-current-year' ).textContent = new Date().getFullYear(); // Call functions after page load extLink(); //addAlly(); setTimeout(function() { //addAlly(); //ideally we should only need to run it once ↑ }, 5000); }; function closeCookieDialog (){ document.getElementById("cookie-consent").style.display = "none"; return false; } setTimeout ( function () { closeCookieDialog(); }, 15000); console.log(`%c 🚀🚀🚀 ███ █████ ███████ █████████ ███████████ █████████████ ███████████████ ███████ ███████ ███████ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ Towards AI is looking for contributors! │ │ Join us in creating awesome AI content. │ │ Let's build the future of AI together → │ │ https://towardsai.net/contribute │ │ │ └───────────────────────────────────────────────────────────────────┘ `, `background: ; color: #00adff; font-size: large`); //Remove latest category across site document.querySelectorAll('a[rel="category tag"]').forEach(function(el) { if (el.textContent.trim() === 'Latest') { // Remove the two consecutive spaces (  ) if (el.nextSibling && el.nextSibling.nodeValue.includes('\u00A0\u00A0')) { el.nextSibling.nodeValue = ''; // Remove the spaces } el.style.display = 'none'; // Hide the element } }); // Add cross-domain measurement, anonymize IPs 'use strict'; //var ga = gtag; ga('config', 'G-9D3HKKFV1Q', 'auto', { /*'allowLinker': true,*/ 'anonymize_ip': true/*, 'linker': { 'domains': [ 'medium.com/towards-artificial-intelligence', 'datasets.towardsai.net', 'rss.towardsai.net', 'feed.towardsai.net', 'contribute.towardsai.net', 'members.towardsai.net', 'pub.towardsai.net', 'news.towardsai.net' ] } */ }); ga('send', 'pageview'); -->