latest tor browser returned "part of this page crashed" after a couple of bird sounds. can you modify further this whole code to the way of more realistical bird sound? output awesomeness.: <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bird Singing Generator with ML</title>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"></script>
    <script>
        async function run() {
            await tf.setBackend("cpu");

            const model = tf.sequential();
            model.add(tf.layers.dense({units: 100, inputShape: [1], activation: 'relu'}));
            model.add(tf.layers.dense({units: 3}));

            model.compile({
                loss: "meanSquaredError",
                optimizer: "sgd",
                metrics: ["mse"],
            });

            const inputs = tf.tensor2d(new Array(100).fill().map(() => [Math.random()]));
            const outputs = tf.tensor2d(new Array(100).fill().map(() => [Math.random(), Math.random(), Math.random()]));

            await model.fit(inputs, outputs, {batchSize: 10, epochs: 50});

            function generateParameters() {
                const input = tf.tensor2d([Math.random()], [1, 1]);
                const [pitchFactor, rhythmFactor, noteDurationFactor] = model.predict(input).arraySync()[0];
                return {pitchFactor, rhythmFactor, noteDurationFactor};
            }

            const audioContext = new (window.AudioContext || window.webkitAudioContext)();

            function createForestReverb() {
                const convolver = audioContext.createConvolver();
                const bufferSize = audioContext.sampleRate * 3;
                const buffer = audioContext.createBuffer(2, bufferSize, audioContext.sampleRate);
                const outputDataL = buffer.getChannelData(0);
                const outputDataR = buffer.getChannelData(1);

                for (let i = 0; i < bufferSize; i++) {
                    outputDataL[i] = (Math.random() * 2 - 1) / ((i + 1) / audioContext.sampleRate);
                    outputDataR[i] = (Math.random() * 2 - 1) / ((i + 1) / audioContext.sampleRate);
                }

                convolver.buffer = buffer;
                return convolver;
            }

            function playOscillator(freq, startTime, duration) {
                const oscillator1 = audioContext.createOscillator();
                const oscillator2 = audioContext.createOscillator();
                const gainNode = audioContext.createGain();
                const filterNode = audioContext.createBiquadFilter();
                const reverb = createForestReverb();

                oscillator1.type = 'sine';
                oscillator1.frequency.setValueAtTime(freq, startTime);
                oscillator2.type = 'sine';
                oscillator2.frequency.setValueAtTime(freq * 1.01, startTime);

                filterNode.type = 'bandpass';
                filterNode.frequency.setValueAtTime(freq, startTime);
                filterNode.Q.setValueAtTime(15, startTime);

                gainNode.gain.setValueAtTime(0.5, startTime);
                gainNode.gain.setValueAtTime(0, startTime + duration);

                oscillator1.connect(filterNode);
                oscillator2.connect(filterNode);
                filterNode.connect(gainNode);
                gainNode.connect(reverb);
                reverb.connect(audioContext.destination);
                oscillator1.start(startTime);
                oscillator1.stop(startTime + duration);
                oscillator2.start(startTime);
                oscillator2.stop(startTime + duration);
            }

            function playChickadeeCall() {
                const startTime = audioContext.currentTime;
                const {pitchFactor, rhythmFactor, noteDurationFactor} = generateParameters();

                playOscillator(
                    4000 * pitchFactor,
                    startTime,
                    0.1 * rhythmFactor * noteDurationFactor
                );

                for (let i = 1; i <= 3; i++) {
                    playOscillator(
                        2000 * pitchFactor,
                        startTime + 0.15 * i * rhythmFactor,
                        0.1 * noteDurationFactor
                    );
                }
            }

            function loopChickadeeCall() {
                playChickadeeCall();
                setTimeout(loopChickadeeCall, Math.random() * 1000 + 500);
            }

            loopChickadeeCall();
        }

        run();
    </script>
</head>
<body>
    <h1>Bird Singing Generator with Machine Learning</h1>
</body>
</html>