您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
为微软的文本转语音服务的 demo 页面添加下载按钮
当前为
// ==UserScript== // @name Azure Speech Download // @namespace // @version 0.2 // @description 为微软的文本转语音服务的 demo 页面添加下载按钮 // @author Puteulanus // @homepage https://gf.qytechs.cn/zh-CN/scripts/444347-azure-speech-download // @match https://azure.microsoft.com/*/services/cognitive-services/text-to-speech/* // @icon https://www.microsoft.com/favicon.ico // @require https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js // @grant none // @run-at document-end // @namespace https://gf.qytechs.cn/users/909438 // ==/UserScript== /* globals saveAs */ /* jshint esversion: 6 */ (function() { 'use strict'; // Your code here... const SpeechSDK = window.SpeechSDK let fileSize = 0 let wavFragments = [] let enableDownload = false const downloadStatus = document.createElement('div') const downloadSize = document.createElement('div') const downloadButton = document.getElementById('playli').cloneNode(true) const buttonArea = document.getElementById('playli').parentElement downloadButton.id = ('donwloadli') // downloadButton.querySelector('span svg').style.transform = 'rotate(90deg)' downloadButton.querySelector('span:last-of-type').textContent = '下载' downloadButton.querySelector('button').style.backgroundColor = 'green' downloadButton.querySelector('button').style.borderColor = 'green' downloadButton.addEventListener('click', () => { downloadStatus.textContent = '下载中' enableDownload = true document.getElementById('playbtn').click() enableDownload = false }) downloadStatus.style.marginRight = '10px' buttonArea.appendChild(downloadButton) buttonArea.parentElement.appendChild(downloadStatus) buttonArea.parentElement.appendChild(downloadSize) const streamHandler = { write: function (dataBuffer) { fileSize += dataBuffer.byteLength downloadSize.textContent = `已接收 ${fileSize / 1000} kb` wavFragments.push(dataBuffer); }, close: function () { downloadStatus.textContent = '下载完成' const sentAudio = new window.Uint8Array(fileSize) fileSize = 0 wavFragments.reduce((size, fragment) => { sentAudio.set(new window.Uint8Array(fragment), size) return size + fragment.byteLength }, 0) wavFragments.length = 0 saveAs(new Blob([sentAudio]), (new Date()).toISOString().replace('T', ' ').replace(':', '_').split('.')[0] + '.mp3') } } const outputStream = SpeechSDK.PushAudioOutputStream.create(streamHandler) SpeechSDK.AudioConfig.fromSpeakerOutput = (() => { const fromSpeakerOutput = SpeechSDK.AudioConfig.fromSpeakerOutput return function (audioDestination) { return enableDownload ? audioDestination.onAudioEnd() || SpeechSDK.AudioConfig.fromStreamOutput(outputStream) : fromSpeakerOutput(audioDestination) } })() })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址