Skip to content

gdzx/audiosource

Repository files navigation

Audio Source

Audio Source forwards Android microphone audio input to the PulseAudio daemon through ADB, so you can use your Android device as a USB microphone.

screenshot

Requirements

  • Device with at least Android 4.0 (API level 14), but fully tested only on Android 10 (API level 29) so your mileage may vary.
  • GNU/Linux machine with:
    • Android SDK Platform Tools (requires adb in PATH).
    • PulseAudio or PipeWire with PulseAudio support (requires pactl in PATH).
    • Python 3 (requires python3 in PATH).

Installation

Get it on F-Droid Get it on GitHub

  1. Install the Audio Source APK on your Android device through F-Droid, or from the releases, or by following the build instructions.
  2. Download the audiosource client script on your computer from the releases, and mark it executable with chmod a+x ./audiosource.

Usage

  1. Enable Android Debug Bridge (ADB) from the Developer options and connect the device to your computer.

  2. Run ./audiosource run to start Audio Source and forward the audio automatically. You may have to grant the permission to record audio in Android.

  3. Run ./audiosource volume LEVEL to set the PulseAudio source volume to LEVEL (for instance 200%). You will likely need to set the volume higher than 100%.

Multi-device

If you have multiple devices connected then you will have to specify the serial number of the device you would like to forward audio to with ./audiosource -s SERIAL COMMAND or by setting the $ANDROID_SERIAL environment variable.

Device serial numbers can be found by running adb devices.

You can utilize job control to forward audio from multiple devices simultaneously as follows:

$ ./audiosource -s shiba run &  # press ENTER to regain control of your terminal
$ ./audiosource -s 192.168.1.188:39857 run

Build and install

Run ./gradlew tasks to list the available commands.

Debug

$ ./audiosource build
$ ./audiosource install

Release

  1. Generate a Java KeyStore:

    $ keytool -keystore /home/user/android.jks -genkey -alias release \
           -keyalg RSA -keysize 2048 -validity 30000
  2. Create keystore.properties in the project root directory containing:

    storeFile=/home/user/android.jks
    storePassword=STORE_PASS
    keyAlias=release
    keyPassword=KEY_PASS
  3. Build and install:

    $ export AUDIOSOURCE_PROFILE=release
    $ ./audiosource build
    $ ./audiosource install

Acknowledgement

sndcpy for the initial implementation of audio playback forwarding.

License

This project is licensed under the MIT license (LICENSE or http://opensource.org/licenses/MIT).