ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

智能语音点读机

2022-01-29 23:05:31  阅读:252  来源: 互联网

标签:翻译 TranslationButton 点读机 智能 window 语音 appid var event


选中文本智能语音播报,脚本内填写正确appid与密钥后开启翻译即可(默认关闭)

使用脚本前需先安装脚本管理器(2选1即可):1. tampermonkey  2.脚本猫

百度翻译api申请地址:百度翻译开放平台

脚本更新地址:https://scriptcat.org/script-show-page/299

// ==UserScript==
// @name         智能语音点读机
// @namespace    https://bbs.tampermonkey.net.cn/
// @version      0.2.2
// @description  哪里不会点哪里~!选中文本自动语音播报~!语音翻译功能需自行申请翻译api,填写正确后开启翻译即可(开启后选中文本在鼠标附近会出现翻译按钮)~!
// @author       张仨
// @match        *://*/*
// @grant        unsafeWindow
// @grant        GM_xmlhttpRequest
// @connect      fanyi-api.baidu.com
// @require      https://cdn.jsdelivr.net/npm/ddkr-zhangsan@1.0.0/md5.js
// ==/UserScript==

unsafeWindow.onload = function () {
    'use strict';
    var pitch = 1;   //音调,取值范围(0 - 2) 默认值:1
    var rate = 0.7;  //语速,取值范围(0.1 - 10) 默认值:1
    var Translate = false; //是否开启翻译 默认false不开启 改为true则开启
    var LeftOffset = 50;   //翻译按钮偏移量 数值越大越往右偏移
    var UpOffset = 0;      //翻译按钮偏移量 数值越大越往下偏移
    var appid = '123456';   //百度翻译APP ID 请自行申请
    var key = '0123456789';  //密钥
    function speak(sentence) {
        var utterance = new SpeechSynthesisUtterance(sentence);
        utterance.pitch = pitch;
        utterance.rate = rate;
        window.speechSynthesis.speak(utterance);
    };
    window.addEventListener('mouseup', () => {
        var txt = window.getSelection();
        speak(txt, pitch, rate)
    })
    function newAjax() {
        var salt = (new Date).getTime();
        var query = window.getSelection().toString();
        var from = 'auto';
        var to;
        var pattern = new RegExp("[\u4E00-\u9FA5]+");
        if (pattern.test(query)) {
            to = 'en';
        } else {
            to = 'zh';
        };
        var str1 = appid + query + salt + key;
        var sign = MD5(str1);
        GM_xmlhttpRequest({
            method: "POST",
            responseType: "json",
            headers: {
                "Content-type": "application/x-www-form-urlencoded"
            },
            data: `q=${encodeURI(query)}&from=${from}&to=${to}&appid=${appid}&salt=${salt}&sign=${sign}`,
            url: "https://fanyi-api.baidu.com/api/trans/vip/translate?",
            onl oad: function (xhr) {
                if (xhr.response.error_code) {
                    var flag = confirm("请检查你的appid与密钥是否正确,如未申请API可点击对话框中的确定按钮跳转到百度翻译开放平台进行申请通用翻译API");
                    if (flag) {
                        window.open("https://api.fanyi.baidu.com/product/11");
                    }
                } else {
                    var TextTranslate = xhr.response.trans_result[0].dst;
                    speak(TextTranslate, pitch, rate);
                }
            }
        });
    };
    if (Translate) {
        document.addEventListener("mouseup", (event) => {
            event = event || window.event;
            var left = event.clientX;
            var top = event.clientY;
            var TranslationButton = document.querySelector('#speech-translation');
            var getSelection = window.getSelection().toString();
            if (getSelection != '') {
                if (TranslationButton) {
                    document.body.removeChild(TranslationButton);
                };
                TranslationButton = document.createElement("button");
                document.body.appendChild(TranslationButton);
                TranslationButton.style.left = left + LeftOffset + "px";
                TranslationButton.style.top = top + UpOffset + "px";
                TranslationButton.id = "speech-translation";
                TranslationButton.innerHTML = `
                <span id='btn-translation'>翻译</span>
                <style>
                #speech-translation{
                    position: fixed;
                    width: 60px;
                    height: 30px;
                    cursor: pointer;
                    z-index: 9999999;
                    border-style: none;
                    outline: none;
                    border-radius: 50px;
                    background: #36c8b0;
                    box-shadow:  6px 6px 13px #79e6d3,
                    -6px -6px 13px #ffffff;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                }
                #btn-translation{
                    color: #0078d4;
                    font-size: 18px;
                    font-family: Playball, cursive;
                }
                </style>
                `;
                TranslationButton.addEventListener('mouseup', function (e) {
                    e.stopPropagation();
                });
                TranslationButton.onclick = function () {
                    newAjax();
                };
            } else if (TranslationButton) {
                document.body.removeChild(TranslationButton);
            };
        });
    };
}

标签:翻译,TranslationButton,点读机,智能,window,语音,appid,var,event
来源: https://www.cnblogs.com/MarHangover/p/15856045.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有