{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Realtime VAD\n", "\n", "Let say you want to cut your realtime recording audio by using VAD, malaya-speech able to do that." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This tutorial is available as an IPython notebook at [malaya-speech/example/realtime-vad](https://github.com/huseinzol05/malaya-speech/tree/master/example/realtime-vad).\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This module is language independent, so it save to use on different languages. Pretrained models trained on multilanguages.\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This is an application of malaya-speech Pipeline, read more about malaya-speech Pipeline at [malaya-speech/example/pipeline](https://github.com/huseinzol05/malaya-speech/tree/master/example/pipeline).\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import malaya_speech\n", "from malaya_speech import Pipeline\n", "from malaya_speech.utils.astype import float_to_int" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load VAD model\n", "\n", "We are going to use WebRTC VAD model, read more about VAD at https://malaya-speech.readthedocs.io/en/latest/load-vad.html" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "vad_model = malaya_speech.vad.webrtc()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p_vad = Pipeline()\n", "pipeline = (\n", " p_vad.map(lambda x: float_to_int(x, divide_max_abs=False))\n", " .map(vad_model)\n", ")\n", "p_vad.visualize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Starting malaya-speech 1.4.0, streaming always returned a float32 array between -1 and +1 values." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Streaming interface\n", "\n", "```python\n", "def stream(\n", " vad_model=None,\n", " asr_model=None,\n", " classification_model=None,\n", " sample_rate: int = 16000,\n", " segment_length: int = 2560,\n", " num_padding_frames: int = 20,\n", " ratio: float = 0.75,\n", " min_length: float = 0.1,\n", " max_length: float = 10.0,\n", " realtime_print: bool = True,\n", " **kwargs,\n", "):\n", " \"\"\"\n", " Stream an audio using pyaudio library.\n", "\n", " Parameters\n", " ----------\n", " vad_model: object, optional (default=None)\n", " vad model / pipeline.\n", " asr_model: object, optional (default=None)\n", " ASR model / pipeline, will transcribe each subsamples realtime.\n", " classification_model: object, optional (default=None)\n", " classification pipeline, will classify each subsamples realtime.\n", " device: None, optional (default=None)\n", " `device` parameter for pyaudio, check available devices from `sounddevice.query_devices()`.\n", " sample_rate: int, optional (default = 16000)\n", " output sample rate.\n", " segment_length: int, optional (default=2560)\n", " usually derived from asr_model.segment_length * asr_model.hop_length,\n", " size of audio chunks, actual size in term of second is `segment_length` / `sample_rate`.\n", " ratio: float, optional (default = 0.75)\n", " if 75% of the queue is positive, assumed it is a voice activity.\n", " min_length: float, optional (default=0.1)\n", " minimum length (second) to accept a subsample.\n", " max_length: float, optional (default=10.0)\n", " maximum length (second) to accept a subsample.\n", " realtime_print: bool, optional (default=True)\n", " Will print results for ASR.\n", " **kwargs: vector argument\n", " vector argument pass to malaya_speech.streaming.pyaudio.Audio interface.\n", "\n", " Returns\n", " -------\n", " result : List[dict]\n", " \"\"\"\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Start Recording" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Again, once you start to run the code below, it will straight away recording your voice**. \n", "\n", "If you run in jupyter notebook, press button stop up there to stop recording, if in terminal, press `CTRL + c`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "samples = malaya_speech.streaming.pyaudio.stream(vad_model = p_vad, segment_length = 320)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(samples)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'wav_data': array([0.0005531 , 0.00187427, 0.00227408, ..., 0.00623526, 0.00693975,\n", " 0.00602183], dtype=float32),\n", " 'start': 0.0,\n", " 'end': 6.8}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "samples[0]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "import IPython.display as ipd" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipd.Audio(samples[0]['wav_data'], rate = 16000)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipd.Audio(samples[1]['wav_data'], rate = 16000)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipd.Audio(samples[2]['wav_data'], rate = 16000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Post script" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You guys can hear my wife and my kid arguing each other at the background 😅." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "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.9.4" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }