-
-
Save alekssamos/c9f3e9f4c7a131139a1a8e3d2a418b1d to your computer and use it in GitHub Desktop.
my messing w/ msedge dev read aloud. ONLY RUN IN edge dev. i give up, so it wont work properly
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var ARRAY_LENGTH = 16; | |
var MIN_HEX_LENGTH = 2; | |
class UUID { | |
static createUUID() { | |
const array = new Uint8Array(ARRAY_LENGTH); | |
window.crypto.getRandomValues(array); | |
let uuid = ''; | |
for (let i = 0; i < ARRAY_LENGTH; i++) { | |
let hexString = array[i].toString(ARRAY_LENGTH); | |
hexString = this._formatHexString(hexString); | |
uuid += hexString; | |
} | |
return uuid; | |
} | |
static _formatHexString(hexString) { | |
if (hexString.length < MIN_HEX_LENGTH) { | |
hexString = '0' + hexString; | |
} | |
return hexString; | |
} | |
} | |
function startTTS(data, key, cb){ // { [outFmt] } | |
var socket = new WebSocket('wss://speech.platform.bing.com/consumer/speech/synthesize' + | |
'/readaloud/edge/v1?TrustedClientToken=' + key); | |
var fmt = {"context":{"synthesis":{"audio":{"metadataoptions":{"sentenceBoundaryEnabled":"false","wordBoundaryEnabled":"true"},"outputFormat":"audio-24khz-48kbitrate-mono-mp3"}}}}; | |
if (data && data.outFmt) fmt.context.synthesis.audio.outputFormat = data.outFmt; | |
socket.addEventListener('message', function (event) { | |
console.log("msg", event); | |
var blob = new Blob([event.data], {type: 'audio/mpeg'}); | |
var blobUrl = URL.createObjectURL(blob); | |
console.log(blob); | |
setTimeout((objectUrl) => { | |
new Audio(objectUrl).play(); | |
}, 2000, blobUrl); | |
}); | |
socket.addEventListener('open', function (event) { | |
socket.send('X-Timestamp:' + new Date().toString() + | |
'\r\nContent-Type:application/json; ' + | |
'charset=utf-8\r\nPath:speech.config\r\n\r\n' + JSON.stringify(fmt)); | |
cb(socket); | |
}); | |
return socket; | |
} | |
window.uuid = UUID.createUUID(); | |
chrome.systemPrivate.getApiKey(function(a){window.key=a; | |
var tts = startTTS({},key,(tts)=>{ | |
var ssml = 'X-RequestId:' + uuid + | |
'\r\nContent-Type:application\/ssml+xml\r\nX-Timestamp:' | |
+ new Date().toString() + 'Z\r\nPath:ssml\r\n\r\n' + ` | |
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'><voice name='Microsoft Server Speech Text to Speech Voice (zh-CN, XiaoxiaoNeural)'><prosody pitch='+0Hz' rate ='+0%' volume='+0%'> How to download files using axios</prosody></voice></speak> | |
`; | |
tts.send(ssml); | |
// tts.close(); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment