Latest update Android YouTube

Adding Blog-to-Speech Feature to Your Blogger Blog

Estimated read time: 41 min

Welcome to Enhanced Accessibility - Adding Text-to-Speech to Your Blogger Blog!

Today, we embark on a journey to enhance the accessibility and user experience of your Blogger (Blogspot) blog by incorporating an innovative feature: text-to-speech functionality. 

In this guide, we'll walk you through the process of integrating this powerful tool into your blog, allowing your audience to listen to your content with ease.

Adding Blog-to-Speech Feature to Blogger Blog - IndianTechnoEra.jpg


We'll explore how to enhance your Google Blogger (Blogspot) blog by adding a text-to-speech feature. This feature enables visitors to listen to your blog posts instead of reading them. 

By incorporating simple HTML, CSS, and JavaScript, we'll create a user-friendly interface with controls to play and stop the audio, adjust playback speed, and choose different languages and accents.


Importance and Benefits

Accessibility: Integrating text-to-speech functionality enhances accessibility for users with visual impairments or reading difficulties. It provides an alternative way to consume content beyond traditional reading.


User Experience: Offering diverse means of consuming content improves the overall user experience of your blog. Users can choose their preferred mode of interaction based on their convenience and context.


Multilingual Support: Text-to-speech features often support multiple languages and accents, allowing you to cater to a broader audience with diverse linguistic backgrounds.


Innovation and Engagement: Implementing innovative features like text-to-speech demonstrates your blog's commitment to staying updated with technological advancements. It can also increase user engagement by providing unique and interactive content experiences.


Code Implementation

The code implementation involves three main components: HTML structure, CSS styling, and JavaScript functionality.

HTML Structure:

The HTML structure defines the layout of the text-to-speech controls, including buttons, dropdowns, and input ranges. These elements are placed within a designated container on the blog post page.

CSS Styling:

CSS styling is applied to customize the appearance of the text-to-speech controls, ensuring they align with your blog's design aesthetics. Styling includes adjustments to button sizes, colors, margins, and overall layout.

JavaScript Functionality:

JavaScript code provides the core functionality for the text-to-speech feature. It utilizes the Web Speech API to convert text content into speech. The JavaScript code listens for user interactions, such as clicking the play or stop buttons, and adjusts the speech synthesis parameters accordingly.


Implementing Text-to-Speech Feature

To begin, follow these steps:

1. Insert HTML Structure

Place the following HTML code snippet within your Blogger template, preferably inside the post body section:

<b:if cond='data:view.isSingleItem'>
    <!--[ Post body ]-->
    
    <div class='blog-text-play-button'>
        <div class='blog-text-play'>
            <input class='speed-range' id='speedRange' max='2' min='0.5' step='0.1' type='range' value='0.7'/>
            <select class='blog-text-language-select' id='blogTextlanguageSelect'>
                <option value='en-IN'>En-IN</option>
                <option value='en-US'>En-US</option>
                <option value='en-AU'>En-AU</option>
                <option value='hi-IN'>Hi-IN</option>
                <option value='ur-IN'>Ur-IN</option>
                <option value='ar-SA'>Ar-SA</option>
            </select>

            <button class='play-button' id='playButton'>🎧 ▶</button>
            <button class='stop-button' id='stopButton'>■</button>
        </div>
    </div>
</b:if>

2. Add CSS Styling

Apply the following CSS styles to customize the appearance of the text-to-speech controls:


<style>
    .blog-text-play-button {
        border: none;
        border-radius: 5px;
        background-color: rgb(228, 225, 225);
    }
    /* Media query for mobile devices (max-width: 767px) */
    @media (max-width: 767px) {
        .blog-text-play-button {
            display: none; /* Hide the button on mobile devices */
        }
    }
    .blog-text-play {
        text-align: center;
        margin-top: 50px;
    }
    .blog-text-language-select,
    .speed-range {
        margin-bottom: 10px;
    }
    .play-button,
    .stop-button,
    .blog-text-language-select {
        margin: 5px;
        padding: 5px 10px;
        font-size: 16px;
        cursor: pointer;
        background-color: #007bff;
        color: white;
        border: none;
        border-radius: 5px;
    }
    .stop-button {
        /* background-color: red; */
    }
    .play-button:hover,
    .stop-button:hover {
        background-color: #0056b3;
    }
</style>

3. Implement JavaScript Functionality

Include the JavaScript code to enable text-to-speech functionality and control the playback:


<script>
    document.addEventListener('DOMContentLoaded', function () {
        var speechSynthesis = window.speechSynthesis;
        var currentSpeech = null; // To keep track of the current speech synthesis

        // Add an event listener to the play button
        document.getElementById('playButton').addEventListener('click', function () {
            // Ensure the previous speech synthesis is stopped before playing a new one
            if (currentSpeech && speechSynthesis.speaking) {
                speechSynthesis.cancel();
            }

            // Get the content of the current blog post
            var postContent = document.querySelector('.postBody').innerText; // Adjust the selector based on your template

            // Get the selected language from the dropdown menu
            var selectedLanguage = document.getElementById('blogTextlanguageSelect').value;

            // Get the selected speed from the range input
            var selectedSpeed = parseFloat(document.getElementById('speedRange').value);

            // Call the Text-to-Speech API to play the content
            var speechText = new SpeechSynthesisUtterance(postContent);
            speechText.lang = selectedLanguage; // Set the selected language
            speechText.rate = selectedSpeed; // Set the selected speed
            speechSynthesis.speak(speechText);

            // Update the currentSpeech variable
            currentSpeech = speechText;
        });

        // Add an event listener to the stop button
        document.getElementById('stopButton').addEventListener('click', function () {
            // Check if speech synthesis is in progress, then stop it
            if (speechSynthesis.speaking) {
                speechSynthesis.cancel();
            }
        });
    });
</script>

Explanation

Let's break down the key components of our implementation:


HTML Structure: We define the layout of our text-to-speech controls using HTML elements such as buttons, dropdowns, and input ranges.

CSS Styling: We apply styles to ensure our controls are visually appealing and user-friendly.

JavaScript Functionality: We utilize the Web Speech API to convert text into speech. When the 'play' button is clicked, the content of the blog post is fetched, and a new SpeechSynthesisUtterance object is created with the selected language and speed. The 'stop' button allows users to halt speech synthesis if needed.


How to apply?

To apply the text-to-speech feature to your Blogger (Blogspot) blog, follow these steps:

Step 1: Access Your Blogger Dashboard

Go to Blogger and log in with your Google account.

Navigate to the dashboard of the blog where you want to add the text-to-speech feature.


Step 2: Access Theme Editor

In the Blogger dashboard, select the blog you want to edit.

Go to the "Theme" section in the left sidebar.

Click on the "Edit HTML" button.


Step 3: Insert Code Snippets

Locate the place and paset after  " <b:if cond='data:view.isSingleItem'>" to insert the HTML, CSS, and JavaScript code snippets within your Blogger template . 

<b:if cond='data:view.isSingleItem'>
    <!--[ Post body ]-->
    
    <div class='blog-text-play-button'>
        <div class='blog-text-play'>
            <input class='speed-range' id='speedRange' max='2' min='0.5' step='0.1' type='range' value='0.7'/>
            <select class='blog-text-language-select' id='blogTextlanguageSelect'>
                <option value='en-IN'>En-IN</option>
                <option value='en-US'>En-US</option>
                <option value='en-AU'>En-AU</option>
                <option value='hi-IN'>Hi-IN</option>
                <option value='ur-IN'>Ur-IN</option>
                <option value='ar-SA'>Ar-SA</option>
            </select>

            <button class='play-button' id='playButton'>🎧 ▶</button>
            <button class='stop-button' id='stopButton'>■</button>
        </div>

        <style>
            .blog-text-play-button {
                border: none;
                border-radius: 5px;
                background-color: rgb(228, 225, 225);
            }
            /* Media query for mobile devices (max-width: 767px) */
            @media (max-width: 767px) {
                .blog-text-play-button {
                    display: none; /* Hide the button on mobile devices */
                }
            }
            .blog-text-play {
                text-align: center;
                margin-top: 50px;
            }
            .blog-text-language-select,
            .speed-range {
                margin-bottom: 10px;
            }
            .play-button,
            .stop-button,
            .blog-text-language-select {
                margin: 5px;
                padding: 5px 10px;
                font-size: 16px;
                cursor: pointer;
                background-color: #007bff;
                color: white;
                border: none;
                border-radius: 5px;
            }
            .stop-button {
                /* background-color: red; */
            }
            .play-button:hover,
            .stop-button:hover {
                background-color: #0056b3;
            }
        </style>
        <script>
            document.addEventListener('DOMContentLoaded', function () {
                var speechSynthesis = window.speechSynthesis;
                var currentSpeech = null; // To keep track of the current speech synthesis

                // Add an event listener to the play button
                document.getElementById('playButton').addEventListener('click', function () {
                    // Ensure the previous speech synthesis is stopped before playing a new one
                    if (currentSpeech && speechSynthesis.speaking) {
                        speechSynthesis.cancel();
                    }

                    // Get the content of the current blog post
                    var postContent = document.querySelector('.postBody').innerText; // Adjust the selector based on your template

                    // Get the selected language from the dropdown menu
                    var selectedLanguage = document.getElementById('blogTextlanguageSelect').value;

                    // Get the selected speed from the range input
                    var selectedSpeed = parseFloat(document.getElementById('speedRange').value);

                    // Call the Text-to-Speech API to play the content
                    var speechText = new SpeechSynthesisUtterance(postContent);
                    speechText.lang = selectedLanguage; // Set the selected language
                    speechText.rate = selectedSpeed; // Set the selected speed
                    speechSynthesis.speak(speechText);

                    // Update the currentSpeech variable
                    currentSpeech = speechText;
                });

                // Add an event listener to the stop button
                document.getElementById('stopButton').addEventListener('click', function () {
                    // Check if speech synthesis is in progress, then stop it
                    if (speechSynthesis.speaking) {
                        speechSynthesis.cancel();
                    }
                });
            });
        </script>
    </div>
</b:if>

Insert the HTML structure provided in the blog post within a <pre><code> block. This ensures that the code is displayed as plain text without any rendering.


Paste the CSS styling code within a <style> block, ensuring it's placed inside the <head> section of your template.


Include the JavaScript functionality provided in the blog post within a <script> block. Place this script just before the closing </body> tag.


Step 4: Save Changes

After inserting the code snippets into your Blogger template, make sure to save the changes to update your blog's theme.


Step 5: Test the Feature

Once you've saved the changes, visit your blog to see the text-to-speech feature in action.

Open a blog post, and you should see the text-to-speech controls, including buttons to play and stop the audio, a dropdown menu to select languages, and a range input to adjust the playback speed.

Click the "Play" button to listen to the content of the blog post in the selected language and speed. Use the "Stop" button to halt the audio playback.


Step 6: Customize and Refine

Feel free to customize the design and functionality of the text-to-speech feature to better suit your blog's layout and styling preferences. You can modify the CSS styles and adjust the JavaScript code as needed.


Step 7: Publish Your Blog

Once you're satisfied with the implementation and customization of the text-to-speech feature, publish your blog to make the changes live and accessible to your audience.


By following these steps, you can successfully integrate the text-to-speech feature into your Blogger blog, enhancing accessibility and providing an alternative way for your visitors to engage with your content.


Another format: 

Inline play section with responsive

<span class='blog-text-play-button'>
<span class='blog-text-play'>
<input class='speed-range' id='speedRange' max='2' min='0.5' step='0.1' type='range' value='0.7'/>
<select class='blog-text-language-select' id='blogTextlanguageSelect'>
<option value='en-IN'>En-IN</option>
<option value='en-US'>En-US</option>
<option value='en-AU'>En-AU</option>
<option value='hi-IN'>Hi-IN</option>
<option value='ur-IN'>Ur-IN</option>
<option value='ar-SA'>Ar-SA</option>
</select>
<button class='play-button' id='playButton'>&#9654;</button>
<button class='stop-button' id='stopButton'>&#9632;</button>
</span>
</span>
<style>
.blog-text-play-button {
border: none;
border-radius: 3px;
}
.blog-text-play {
text-align: center;
}
.blog-text-language-select,
.speed-range {
margin-bottom: 5px;
}
.play-button,
.stop-button,
.blog-text-language-select {
margin: 2px;
padding: 3px 6px;
cursor: pointer;
background-color: #007bff;
color: white;
border: none;
border-radius: 3px;
}
.stop-button {
/* background-color: red; */
}
.play-button:hover,
.stop-button:hover {
background-color: #0056b3;
}
/* Media query for mobile view */
@media (max-width: 768px) {
.blog-text-play &gt; :not(.play-button):not(.stop-button) {
display: none;
}
}
</style>
<script>
document.addEventListener(&#39;DOMContentLoaded&#39;, function () {
var speechSynthesis = window.speechSynthesis;
var currentSpeech = null; // To keep track of the current speech synthesis
// Add an event listener to the play button
document.getElementById(&#39;playButton&#39;).addEventListener(&#39;click&#39;, function () {
// Ensure the previous speech synthesis is stopped before playing a new one
if (currentSpeech &amp;&amp; speechSynthesis.speaking) {
speechSynthesis.cancel();
}
// Get the content of the current blog post
var postContent = document.querySelector(&#39;.postBody&#39;).innerText; // Adjust the selector based on your template
// Get the selected language from the dropdown menu
var selectedLanguage = document.getElementById(&#39;blogTextlanguageSelect&#39;).value;
// Get the selected speed from the range input
var selectedSpeed = parseFloat(document.getElementById(&#39;speedRange&#39;).value);
// Call the Text-to-Speech API to play the content
var speechText = new SpeechSynthesisUtterance(postContent);
speechText.lang = selectedLanguage; // Set the selected language
speechText.rate = selectedSpeed; // Set the selected speed
speechSynthesis.speak(speechText);
// Update the currentSpeech variable
currentSpeech = speechText;
});
// Add an event listener to the stop button
document.getElementById(&#39;stopButton&#39;).addEventListener(&#39;click&#39;, function () {
// Check if speech synthesis is in progress, then stop it
if (speechSynthesis.speaking) {
speechSynthesis.cancel();
}
});
});
</script>
view raw index.html hosted with ❤ by GitHub




Post a Comment

Feel free to ask your query...
Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.