前提
超初心者です。質問が下手と思われるかもしれませんがよろしくお願いいたします。
プログラミング講習の課題で
JavascriptでGoogleのAPIのText to speechを用いた
文章読み上げアプリを作っています。
実装方法はこちらのサイトのまねっこです。このとおりコピペで行っています。
API機能を実装し、合成音声というボタンをおすとに以下のエラーメッセージが発生しました。
https://note.com/npaka/n/nf23247f5f8e4
実現したいこと
読み上げを実現する。
発生している問題・エラーメッセージ
エラーメッセージ TypeError: Cannot read properties of undefined (reading 'replace') speak@script.js:75 onclick@index.html?textBox1=…3%83%8F%E3%83%81:31
該当のソースコード
上記リンク先のまんまです。エラーが出ているのは75行目の
fetch(url, otherparam)
です
Javascript
1 2function speak(button, text) { 3 const url = "https://texttospeech.googleapis.com/v1/text:synthesize?key=" + apiKey; 4 const data = { 5 "input": { 6 "text": text 7 }, 8 "voice": { 9 "languageCode": "ja-JP", 10 "name": "ja-JP-Standard-B" 11 }, 12 "audioConfig": { 13 "audioEncoding": "MP3", 14 "speaking_rate": "1.00", 15 "pitch": "0.00" 16 } 17 } 18 const otherparam={ 19 headers: { 20 "content-type": "application/json; charset=UTF-8" 21 }, 22 body: JSON.stringify(data), 23 method: "POST" 24 } 25 fetch(url, otherparam) 26 .then(data=>{return data.json()}) 27 .then(res=>{ 28 try { 29 var blobUrl = base64ToBlobUrl(res.audioContent) 30 var audio = new Audio() 31 audio.src = blobUrl 32 audio.play() 33 } catch(e) { 34 console.log(e) 35 } 36 }) 37 .catch(error=>alert(error)) 38 } 39 40 // Base64 → BlobUrl 41 function base64ToBlobUrl(base64) { 42 var bin = atob(base64.replace(/^.*,/, '')) 43 var buffer = new Uint8Array(bin.length) 44 for (var i = 0; i < bin.length; i++ ) { 45 buffer[i] = bin.charCodeAt(i) 46 } 47 return window.URL.createObjectURL(new Blob([buffer.buffer], {type: "audio/wav"})) 48 } 49
試したこと
私の知識ではなにかを試すことができませんでした。
補足情報(FW/ツールのバージョンなど)
VisualStudioCode

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。