瀏覽代碼

write audio to files

subDesTagesMitExtraKaese 2 年之前
父節點
當前提交
f26b6a59fb
共有 7 個文件被更改,包括 228 次插入128 次删除
  1. 14 28
      audio.py
  2. 214 100
      beleg.ipynb
  3. 二進制
      output/coif4_f2.wav
  4. 二進制
      output/r.wav
  5. 二進制
      output/stft_f2.wav
  6. 二進制
      output/t_f2.wav
  7. 二進制
      output/x.wav

+ 14 - 28
audio.py

@@ -1,34 +1,20 @@
 import IPython.display
 import numpy as np
 import json
+from scipy.io.wavfile import write
 
-def Audio(audio: np.ndarray, rate: int):
-    """
-    Use instead of IPython.display.Audio as a workaround for VS Code.
-    `audio` is an array with shape (channels, samples) or just (samples,) for mono.
-    """
+def Audio(audio: np.ndarray, rate: int, name: str):
 
-    if np.ndim(audio) == 1:
-        channels = [audio.tolist()]
-    else:
-        channels = audio.tolist()
+    filename = f"output/{name}.wav"
+    amplitude = np.iinfo(np.int16).max
 
-    return IPython.display.HTML("""
-        <script>
-            if (!window.audioContext) {
-                window.audioContext = new AudioContext();
-                window.playAudio = function(audioChannels, sr) {
-                    const buffer = audioContext.createBuffer(audioChannels.length, audioChannels[0].length, sr);
-                    for (let [channel, data] of audioChannels.entries()) {
-                        buffer.copyToChannel(Float32Array.from(data), channel);
-                    }
-            
-                    const source = audioContext.createBufferSource();
-                    source.buffer = buffer;
-                    source.connect(audioContext.destination);
-                    source.start();
-                }
-            }
-        </script>
-        <button onclick="playAudio(%s, %s)" style="padding: 10px">Play</button>
-    """ % (json.dumps(channels), rate))
+    write(filename, rate, (audio*amplitude).astype(np.int16))
+
+    return IPython.display.HTML(f"""
+        <audio controls>
+            <source src="{filename}" type="audio/wav">
+            Your browser does not support the audio element.
+        </audio>
+        <br/>
+        <a href="{filename}">{filename}</a>
+    """)

文件差異過大導致無法顯示
+ 214 - 100
beleg.ipynb


二進制
output/coif4_f2.wav


二進制
output/r.wav


二進制
output/stft_f2.wav


二進制
output/t_f2.wav


二進制
output/x.wav