soundbridge-tx
Gravador de audio e transcritor.
Este pacote é o (TX) em Python.
Instalação
pip install soundbridge-tx
O sounddevice (usado para tocar/capturar áudio) já vem incluído.
Uso rápido
Como biblioteca
from soundbridge_tx import send_file
# escolhe modulação e FEC automaticamente pelo tamanho do arquivo
send_file("meu_arquivo.zip", device=14, auto=True)
Gerar um WAV (sem tocar), para reproduzir depois:
from soundbridge_tx import generate_wav
generate_wav("meu_arquivo.zip", "saida.wav", auto=True)
Enviar um texto direto:
from soundbridge_tx import send_text
send_text("chave: abc123", device=14, copy_to_clipboard=True)
Listar os dispositivos de saída:
from soundbridge_tx import list_devices
for dev in list_devices():
print(dev)
Pela linha de comando
Após instalar, o comando soundbridge-tx fica disponível:
# transmitir ao vivo, escolhendo tudo automaticamente
soundbridge-tx --in meu_arquivo.zip --auto --stereo --band-high 22000 --play --device 14
# gerar um WAV
soundbridge-tx --in meu_arquivo.zip --auto --stereo --band-high 22000 --out saida.wav
# listar os dispositivos de saída
soundbridge-tx --list-devices
Não sabe o índice do
--device? Use--playsem o--device. O programa lista os dispositivos e pergunta qual usar antes de enviar.
Parâmetros da linha de comando
Entrada e saída
| Parâmetro | Descrição |
|---|---|
--in ARQUIVO |
arquivo a transmitir. Também aceita uma pasta (envia todos os arquivos dela, um a um) |
--text "..." |
envia um texto direto, em vez de um arquivo |
--out ARQUIVO.wav |
gera um arquivo WAV em vez de tocar ao vivo |
--play |
toca ao vivo na placa de som |
--device N |
índice do dispositivo de saída (com --play) |
--list-devices |
lista os dispositivos de saída disponíveis e encerra |
--size N |
tamanho de um arquivo de teste gerado internamente (quando não há --in nem --text) |
Modulação e correção de erro
| Parâmetro | Descrição |
|---|---|
--auto |
escolhe a modulação e o FEC automaticamente pelo tamanho do arquivo (recomendado) |
--qam16 |
16-QAM (4 bits por subportadora) |
--qam64 |
64-QAM (6 bits — o teto robusto, recomendado para arquivos grandes) |
--qam256 |
256-QAM (8 bits — experimental, ideal para arquivos pequenos-médios) |
--qam1024 |
1024-QAM (10 bits — experimental, para arquivos muito pequenos) |
| (nenhum) | QPSK (2 bits — o padrão, mais robusto) |
--fec MODO |
correção de erro: r12 (padrão, robusto), r23/r34 (mais leves/rápidos, para arquivos pequenos-médios) ou none (sem proteção) |
--resync MODO |
re-sincronização contra drift de clock: off, 10 (padrão), 25 ou 5 blocos |
--parity MODO |
blocos de paridade para recuperar perdas: off, 8, 16 (padrão) ou 32 grupos |
Canal e banda
| Parâmetro | Descrição |
|---|---|
--stereo |
usa os dois canais do cabo (2× mais rápido; recomendado) |
--band-high N |
frequência máxima da banda OFDM em Hz (padrão 14000; recomendado 22000) |
--peak V |
pico de amplitude do sinal (0–1; reduza se a entrada estiver saturando) |
--guard S |
silêncio de guarda em segundos no início/fim do sinal |
Metadados (o receptor usa ao salvar)
| Parâmetro | Descrição |
|---|---|
--name "NOME" |
nome do arquivo salvo no receptor (aceita subpasta: docs/a.txt) |
--repl-force |
Altera arquivo existente sem perguntar |
--profile NOME |
perfil de recepção (o receptor resolve a pasta de destino) |
--copymemory |
o receptor copia o conteúdo para a área de transferência |
--zip |
comprime os dados antes de enviar (o receptor descomprime). Grande ganho para texto/dados compressíveis |
Múltiplos arquivos (com --in PASTA)
| Parâmetro | Descrição |
|---|---|
--gap S |
intervalo em segundos entre arquivos (padrão 5) |
Diagnóstico
| Parâmetro | Descrição |
|---|---|
--verbose |
mostra detalhes de cada etapa (padrão: só a barra de progresso e o CRC) |
--version |
Informa a versão |
O modo automático (--auto)
Com --auto, o transmissor escolhe a modulação e o FEC pelo tamanho do arquivo,
com base no que foi validado no cabo:
| Tamanho | Escolha | Motivo |
|---|---|---|
| até ~12 KB | 1024-QAM + r12 | o mais rápido; a janela curta protege a modulação densa |
| até ~100 KB | 256-QAM + r34 | denso e com FEC leve — rápido e confiável nesse tamanho |
| acima disso | 64-QAM + r12 | o teto robusto, seguro para arquivos grandes |
As faixas são conservadoras (com margem sobre o medido), priorizando a entrega confiável. Para arquivos grandes, o 64-QAM r12 é sempre a escolha robusta.
Se combinado com --zip, a escolha considera o tamanho comprimido.
Velocidade
Depende da modulação (mais densa = mais rápida, menos robusta):
| Modulação | Velocidade | Observação |
|---|---|---|
| QPSK | ~4 KB/s | mais robusta |
| 16-QAM | ~8 KB/s | equilíbrio |
| 64-QAM | ~12 KB/s | recomendada (teto robusto) |
| 256/1024-QAM | ~16–20 KB/s | experimentais (arquivos pequenos-médios) |
--zip |
até 100×+ | quando os dados comprimem bem |
Preparar o PC transmissor (Windows)
Para o áudio chegar íntegro ao cabo, desative qualquer processamento de som na saída usada: efeitos do driver (equalizador, "surround", "bass boost"), o som espacial do Windows, e painéis de áudio de fabricante. Confirme que o dispositivo opera a 48000 Hz. Na prática o sistema decodifica mesmo com alguns efeitos ligados (o FEC corrige), mas desativá-los dá a melhor margem.
A listagem de dispositivos mostra apenas as saídas WASAPI a 48 kHz (as que o SoundBridge usa). Para ver todas as saídas do sistema, use
--all-devices.
API Python
from soundbridge_tx import send_file, send_text, generate_wav, list_devices
send_file(path, device=None, auto=False, modulation="qpsk", fec="r12", stereo=True, band_high=22000, zip=False, name=None, profile=None, copy_to_clipboard=False)
Transmite um arquivo ao vivo. modulation: "qpsk", "16qam", "64qam", "256qam",
"1024qam". fec: "none", "r12", "r23", "r34".
generate_wav(path, out_wav, **opts)
Gera um WAV em vez de tocar (mesmas opções, sem device).
send_text(text, device=None, **opts)
Envia um texto direto.
list_devices()
Retorna os dispositivos de saída disponíveis, como uma lista de dicionários com as chaves
index, name, channels, sample_rate, api e default.
Como funciona (resumo)
O sinal é OFDM a 48 kHz: um símbolo de sincronização, um de estimativa de canal, um cabeçalho protegido por CRC-24, e os símbolos de dados. Os dados passam por correção de erro (código convolucional + interleaver + paridade) e são organizados em blocos com CRC próprio. No estéreo, os blocos são divididos entre os dois canais (dobrando a velocidade). O receptor remonta os blocos, recupera perdas pela paridade quando possível, e valida o CRC32 final antes de salvar.
Licença
MIT.
Metadata
Release files for soundbridge-tx 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| soundbridge_tx-1.3.0.tar.gz | 34.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| soundbridge_tx-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 68.7 kB
Release files / soundbridge_tx-1.3.0.tar.gz
| Download URL | soundbridge_tx-1.3.0.tar.gz |
|---|---|
| Size | 34.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf8b72fa1d05fa5926b5ebca947eee328032ac21c21e46a4aa7413db50a408da
|
|
BLAKE2b-256 checksum How to use checksums |
30ac00e2cedb3aa7eedf68acf0d61eddc029ed2a2b4fae4e7c2f85842a40be02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / soundbridge_tx-1.3.0-py3-none-any.whl
| Download URL | soundbridge_tx-1.3.0-py3-none-any.whl |
|---|---|
| Size | 34.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
57a127d456fc8b7c6b1c1719e009798fbac32a85b98a359626e23dfadd069801
|
|
BLAKE2b-256 checksum How to use checksums |
1756b14701f1ee07205325420bdf1d30abee4d2750b4a21800ffc1fc51312442
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|