CI Bot c320008418 chore(release): 0.1.3 [skip ci]
## [0.1.3](https://git.nostrdev.com/voca/voca/compare/v0.1.2...v0.1.3) (2025-04-10)

### Bug Fixes

* bump build.gradle version with pipeline ([06a50a5](06a50a58f6))
* fixed typing bug ([52a4c21](52a4c216c7))
* pipeline updates the build gradle (or should) ([2292a0d](2292a0db63))
* version bump automatiocally in build.gradle ([1b9dfa5](1b9dfa5869))
* version bump automatiocally in build.gradle v2 ([66094de](66094dea5a))
* version bump automatiocally in build.gradle v3 ([1f4589c](1f4589cfc1))
2025-04-10 11:05:35 +00:00
2025-04-10 13:03:17 +03:00
2025-04-10 11:05:35 +00:00
2025-04-03 11:02:12 +03:00
2025-04-09 14:05:33 +03:00

Voca - Text-to-Speech App

A privacy-focused Text-to-Speech (TTS) app for Android that respects system language settings and provides a clean, simple interface.

Features

  • Text-to-Speech with system language support
  • Dark/Light mode toggle
  • Share text directly to app
  • Respects system TTS settings
  • Privacy-focused (no permissions required)
  • Lightning address support for donations

Usage

  1. Basic Usage

    • Enter text in the input field
    • Press "Speak" to hear the text
    • Toggle dark mode using the switch
  2. Language Settings

    • Press "TTS Settings" to configure TTS
    • The app uses your system's TTS settings
    • Language changes take effect immediately
  3. Sharing Text

    • Share text from any app to Voca
    • The app will automatically load the shared text
    • Press "Speak" to hear the shared text
  4. Support

    • Use the "Support Voca" button to donate
    • Lightning address: voca@npub.cash

Privacy

  • No internet permission required
  • No data collection
  • All processing done locally
  • Uses system TTS engine

Building

To build the app:

# Debug build
./gradlew assembleDebug

# Release build
./gradlew assembleRelease

Signing Configuration

For release builds, you need to set up a signing configuration:

  1. Copy the template file to create your keystore properties file:

    cp keystore.properties.template keystore.properties
    
  2. Generate a keystore file if you don't have one:

    keytool -genkey -v -keystore release.keystore -alias your_key_alias -keyalg RSA -keysize 2048 -validity 10000
    
  3. Update the keystore.properties file with your keystore details:

    storeFile=release.keystore
    storePassword=your_keystore_password
    keyAlias=your_key_alias
    keyPassword=your_key_password
    

This file is excluded from version control for security reasons.

Requirements

  • Android 8.0 (API 26) or higher
  • System TTS engine installed
  • Language data for desired languages

Release Process

Voca uses a Git-based workflow for releasing to the Zap Store.

Automatic Release

  1. Run the prepare-release script with the new version:

    ./scripts/prepare-release.sh 0.0.7
    
  2. Update the generated release notes in release_notes.md

  3. Commit and push your changes:

    git add .
    git commit -m "chore: prepare release v0.0.7"
    git push origin main
    
  4. Create and push a tag:

    git tag 0.0.7
    git push origin 0.0.7
    

The CI/CD pipeline will automatically:

  • Build the release APK
  • Create a Zap Store package
  • Create a release in Gitea
  • Upload assets to the release
  • Submit the package to the Zap Store

For more details, see Zap Store Release Process. # SSH test

SSH test

MP3 Conversion Feature

This app supports MP3 conversion using two libraries:

  1. AndroidLame: For converting audio files or PCM audio data to MP3 format.
  2. Sherpa-ONNX TTS: For text-to-speech synthesis with natural voice.

Setup Requirements

To use the MP3 conversion feature, you need to add the Sherpa TTS model files:

  1. Download a Sherpa TTS model package from https://github.com/k2-fsa/sherpa-onnx/releases
  2. Extract the model files
  3. Place the model file as app/src/main/assets/sherpa_tts/vits-model.onnx
  4. Place the lexicon file as app/src/main/assets/sherpa_tts/lexicon.txt

Supported Features

  • Convert any audio file to MP3 format
  • Convert text to speech with natural voice and save as MP3
  • Support for multiple languages (depending on the model used)
  • Playback of converted audio files
  • Efficient caching of generated audio files

TTS Engine Compatibility

Important Note for MP3 Generation: Not all Android TTS engines are fully compatible with the MP3 generation feature. Our testing has shown:

  • ONNX Sherpa Model: Works correctly with complete MP3 generation and accurate timing metadata.
  • Next-Gen Kaldi: May freeze during MP3 generation or produce incomplete files.
  • Other TTS engines: Results vary depending on how they implement the Android TTS API.

If you experience issues with MP3 generation:

  1. Try switching to the ONNX Sherpa TTS engine in your Android TTS settings
  2. Test with small text samples first
  3. If an engine freezes, you may need to force close and restart the app

The issue is related to how different TTS engines implement the Android UtteranceProgressListener interface and report progress during synthesis.

Implementation Details

The MP3 conversion feature is implemented using the following components:

  • Mp3Converter.kt: Main class for audio conversion operations
  • SherpaTtsWrapper.kt: JNI wrapper for the Sherpa TTS library
  • sherpa_tts_jni.cpp: Native C++ implementation for Sherpa TTS
  • AudioConverterViewModel.kt: ViewModel for the conversion UI
Description
No description provided
Readme 40 MiB
2025-04-10 11:05:35 +00:00
Languages
Kotlin 99%
Shell 1%