# sharpi-electron
# expiration date: August 13. 2022

This project demonstrates how to use the Sharpi API for denoising a mediastream in an Electron-based app.
IMPORTANT: Please note that the API will no longer be functional after August 13th 2022.

A video demonstrating the below introductions can be found at https://drive.google.com/file/d/1kppKvdqzH94Fs5YtCDL1qSy65dvq3co0/view?usp=sharing


This project includes 
- the sharpi API itself (folder called "sharpiAPI), can be called directly from your own Electron app
- a stand-alone demo app ("demoApp.js") that creates its own mediastream from the system's default speaker and micrhophone for demo purpose.


Applying the API to a mediastream in your own Electron app:
- Copy the folder "sharpiAPI" to your own project folder
- open "demoApp.js" to inspect how to import the sharpi API and pass your mediastream to it (i.e. 2 lines of code.)

- Enjoy your clear speech without disturbing background noise!



Building the demo app: 
- Install electron dependencies by calling "npm install" in the terminal.
- Run the app by calling "npm start" in the terminal.



Testing the demo app:
- The demo app creates a mediastream based on your system's default microphone. For controlled testingm, it is recommended to use a virtual microphone like "BlackHole" to playback a pre-recorded noisy audio file.
- Denoising from a virtual microphone (BlackHole): Select BlackHole as your system michrophone. Select a physical speaker as your system speaker. Play your noisy audio file to BlackHole (on a mac, this requires an app that allows you to specify another speaker then system default, e.g. GarageBand or Audacity)
- Denoising from your physical microphone: If you use a headset, you can record live noisy audio from your physical microphone and hear how the noise is removed (please notice that doing this with built-in speakers would result in a feedback loop.)
