Oxygen is a voice journal and audio analysis toolkit for people who want to change the way their voice comes across.

Related tags

Command-line oxygen
Overview

Oxygen Voice Journal

Oxygen is a voice journal and audio analysis toolkit for people who want to change the way their voice comes across. Or rather, it will be. This is still in very early development. For now, it's a command line version of the Voice Memos app on Apple platforms.

You can watch me code this at https://www.youtube.com/c/JocelynStericker

Motivation

Like many others, I couldn't stand my voice, but it's not until fairly recently that I learned just how flexible our vocal system is and took advantage of that. With the risk of being a little bold, with enough training, it's possible for most people to develop their voice to take on the character of another voice they like. The main limitation is that it can be physically impossible to develop a darker, more boomy voice than your vocal tract supports, but otherwise, whatever traits you wish your voice had, you can probably build them!

Voice training feels a bit like a game. The "core loop" is recording a sample, analyzing it, both with my ear and with software, trying to change some aspect of it, and then repeating. Progress is slow, so it's also important to be able to look back weeks or months to see improvement and stay motivated. Software can help visualize or measure the aspects we need to work on, but my current setup, without that software, is a bit of a Rube Goldberg machine, and I hope I can make training more accessible, organized, and addicting.

Building

This project uses Rust. Once Rust is installed, you can build and run oxygen with cargo:

cargo run

Using

Oxygen will store clips in the "oxygen.sqlite" file in the current working directory.

Oxygen supports the following commands:

cargo run -- record [name]
  Record an audio clip using the default input device until ctrl+c is pressed.
  If name is not specified, the current date and time will be used.

cargo run -- list
  List all clips

cargo run -- record [name]

cargo run -- play name
  Play the clip with the given name

cargo run -- delete name
  Delete the clip with the given name

Contributing

Bug fixes are very welcome! I do have a rough roadmap planned for this project, and am uploading development recordings, so reach out (e.g., in issues) before implementing any major features.

You might also like...
Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers
Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers

Cork is a simple command-line calculator, mainly targeted towards people who deal with hex numbers. It deals only with integer arithmetic. Expressions may involve mixed bases (limited to decimal, hexadecimal, octal and binary numbers). The global output format may be set to a particular radix - by default it is hex.

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful

CLI tool for generating a summary of recent github activity for people who are incredibly forgetful but still need to give weekly status updates to their boss without getting depressed and convincing themselves they did nothing because they can't remember what they did!

Mafa is a command-line tool that helps people interact with online websites in a terminal(tty).
Mafa is a command-line tool that helps people interact with online websites in a terminal(tty).

Table of Contents A Small Demo Installation Prerequisite Option 1: Cargo install (recommended) Option 2: Build from source Option 3: Prebuilt binaries

Mafa is a command-line tool that helps people interact with online websites in a terminal(tty).
Mafa is a command-line tool that helps people interact with online websites in a terminal(tty).

A Small Demo Installation Prerequisite Option 1: Cargo install (recommended) Option 2: Build from source Option 3: Prebuilt binaries Mafa is for me? W

Programming language made by me to learn other people how to make programming languages :3
Programming language made by me to learn other people how to make programming languages :3

Spectra programming language Programming language made for my tutorial videos (my youtube channel): Syntax Declaring a variable: var a = 3; Function

Web-based tool that allows browsing and comparing symbol and type information of Microsoft Windows binaries across different versions of the OS.
Web-based tool that allows browsing and comparing symbol and type information of Microsoft Windows binaries across different versions of the OS.

WinDiff About WinDiff is an open-source web-based tool that allows browsing and comparing symbol and type information of Microsoft Windows binaries ac

Design token framework — adopt a unified design language across platforms, codebases, and teams
Design token framework — adopt a unified design language across platforms, codebases, and teams

Palette Design tokens framework with atomic classes for React and Master CSS. Deliver a consistent visual identity across your apps with design tokens

High-performance and normalised trading interface capable of executing across many financial venues

High-performance and normalised trading interface capable of executing across many financial venues. Also provides a feature rich simulated exchange to assist with backtesting and dry-trading.

Browse and listen to thousands of radio stations across the globe right from your terminal 🌎 📻 🎵✨
Browse and listen to thousands of radio stations across the globe right from your terminal 🌎 📻 🎵✨

TuneIn CLI A command line interface for TuneIn Radio. You can search for stations, play them, and see what's currently playing. 🚚 Installation Compil

Comments
  • Windows build, release builds and GitHub Actions

    Windows build, release builds and GitHub Actions

    This is basically all fiddly configuration, so I didn't even try to record this. I'll probably just briefly summarize this in the next video.

    I added a npm start script in ui to make starting the app in dev mode easier. I also added typescript as a formal dependency and eslint, which can be run via npm test. The settings are very lax, but these will hopefully help me catch silly mistakes.

    To my surprise, Oxygen basically just worked on Windows. The only change was enabling the bundled flag of rusqlite. I could have also provided a compiled version of sqlite, but I figured it was just easier to ask rusqlite to provide a copy.

    To build a production app, I used https://www.electronforge.io. I'm not worrying about installers, code signing, or updates yet, so I only enabled the zip "maker". In pull requests, it tests and builds the app on all 3 platforms, and uploads it as an asset. Assets are a bit buried, but if you go to the workflow logs and then click "Summary", you can see and download them. You need to be downloaded into GitHub. The zip files are double-zipped due to a limitation.

    Because I don't have code signing, you have to go through some silly steps to actually run the app:

    • On Windows, SmartScreen will block the app the first time you try to run it. To continue, click "More info", then "Run anyway". Windows might also determine Electron to be a virus and block you entirely, apparently.
    • On macOS, to be allowed to open the app the first time, right-click and choose "Open"

    When I merge this PR, this should create a draft release with the appropriate assets.

    opened by jocelyn-stericker 0
  • Typo in build instructions

    Typo in build instructions

    While following the build instructions, I recieved the following error:

    🚨 Build failed.
    
    unknown: Entry /home/ajet/repos/oxygen/ui/src/index.htm does not exist
    

    It seems that this line is should be npx parcel src/index.html.

    opened by Ajetski 0
Releases(v0.0.1-f9ffc28a5526f198e803d858313aa259f975075e)
Owner
Jocelyn Stericker
Jocelyn Stericker
Estratto is a powerful and user-friendly Rust library designed for extracting rich audio features from digital audio signals.

estratto 〜 An Audio Feature Extraction Library estratto is a powerful and user-friendly Rust library designed for extracting rich audio features from

Amber J Blue 5 Aug 25, 2023
A diff-based data management language to implement unlimited undo, auto-save for games, and cloud-apps which needs to retain every change.

Docchi is a diff-based data management language to implement unlimited undo, auto-save for games, and cloud-apps which needs to save very often. User'

juzy 21 Sep 19, 2022
Catch Tailwindcss Errors at Compile-Time Before They Catch You, without making any change to your code! Supports overriding, extending, custom classes, custom modifiers, Plugins and many more 🚀🔥🦀

twust Twust is a powerful static checker in rust for TailwindCSS class names at compile-time. Table of Contents Overview Installation Usage Statement

null 15 Nov 8, 2023
A project management tool for data science and bioinformatics. If you want it, Kerblam it!

Warning kerblam run and kerblam package are complete but still untested. Please do use them, but be careful. Always have a backup of your data and cod

Luca 4 Dec 18, 2023
Automate your business flows, support, change tickets with Automatdeck

Automatdeck agent Website: https://automatdeck.com Documentation: https://doc.automatdeck.com Automatdeck agent is a simple lightweight IT automation

Kheshav Sewnundun 5 Aug 2, 2022
Simple tool to change gmsts on launch.

Starfield GMST editor A simple UI to edit Starfield GMSTs and manage your bat file mods. Features filter GMSTs revert to default mod integration merge

Moritz Baron 6 Sep 27, 2023
Bruteforce connecting to a specific Sea of Thieves server. Useful if you want to be in the same server as your friends.

SoT Server Finder Find which Sea of Thieves server you're connected to. Useful if you want to be in the same server as your friends. Setup Download so

Martin 4 Mar 19, 2023
A little application that makes it possible to display mpv's subs anywhere you want.

Mpv Subs Popout A little application that makes it possible to display mpv's subs anywhere you want. Why? You can now watch shows in foreign languages

sdaqo 4 Jul 14, 2023
Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal

Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal. At its core, it is a terminal multiplexer (similar to tmux and screen), but this is merely its infrastructure layer.

null 9.3k Jan 4, 2023
xyz is a chat platform where people sign up, play a matching game, and say goodbye

xyz is an asynchronous chat and web service What you need Docker Desktop ?? Cargo (Rust package manager) ?? Clone our project Follow the steps below t

Matthew 12 Oct 11, 2023