{ "cells": [ { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [], "source": [ "#----------------------------------------------------\n", "# template the read and plot a wav file, and convert\n", "# it to a floating point numpy array\n", "#\n", "# Alex Szalay, Baltimore, 2020-04-02\n", "#-------------------------------------------------------\n", "import os\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import wave" ] }, { "cell_type": "code", "execution_count": 190, "metadata": {}, "outputs": [], "source": [ "def readwavefile(filename):\n", " \"\"\"\n", " Reads a WAV file and returns all the frames converted to floats and the framerate.\n", " \"\"\"\n", " assert os.path.exists(filename) and os.path.isfile(filename)\n", " wavefile = wave.open(filename, 'r')\n", " nframes = wavefile.getnframes()\n", " framerate = wavefile.getframerate()\n", " datatype = None\n", " # Zero converter!\n", " fconverter = lambda a : a\n", " if wavefile.getsampwidth() == 1:\n", " # 8-Bit format is unsigned.\n", " datatype = np.uint8\n", " fconverter = lambda a : ((a / 255.0) - 0.5) * 2\n", " elif wavefile.getsampwidth() == 2:\n", " # 16-Bit format is signed.\n", " datatype = np.int16\n", " fconverter = lambda a : a / 32767.0\n", " # Read and convert to float array\n", " frames = np.frombuffer(wavefile.readframes(nframes), dtype = datatype)\n", " frames = fconverter(np.asarray(frames, dtype = np.float64))\n", " wavefile.close()\n", " return frames, framerate" ] }, { "cell_type": "code", "execution_count": 191, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "48000\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "frames, frate = readwavefile(\"DS16b.wav\")\n", "plt.plot(frames[0:15000])\n", "print(frate)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.7 (py37)", "language": "python", "name": "py37" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }