mirror of
https://github.com/romanz/amodem.git
synced 2026-03-30 23:57:54 +08:00
send: fix training and signal generation
This commit is contained in:
@@ -13,6 +13,7 @@ from . import config
|
|||||||
from . import dsp
|
from . import dsp
|
||||||
from . import stream
|
from . import stream
|
||||||
from . import ecc
|
from . import ecc
|
||||||
|
from . import equalizer
|
||||||
|
|
||||||
modem = dsp.MODEM(config)
|
modem = dsp.MODEM(config)
|
||||||
|
|
||||||
@@ -23,6 +24,7 @@ class Writer(object):
|
|||||||
self.offset = 0
|
self.offset = 0
|
||||||
|
|
||||||
def write(self, fd, sym, n=1):
|
def write(self, fd, sym, n=1):
|
||||||
|
sym = np.array(sym)
|
||||||
data = common.dumps(sym, n)
|
data = common.dumps(sym, n)
|
||||||
fd.write(data)
|
fd.write(data)
|
||||||
self.offset += len(data)
|
self.offset += len(data)
|
||||||
@@ -38,10 +40,12 @@ def start(fd, c):
|
|||||||
for value in train.prefix:
|
for value in train.prefix:
|
||||||
writer.write(fd, c * value)
|
writer.write(fd, c * value)
|
||||||
|
|
||||||
|
silence = [0] * (train.silence_length * config.Nsym)
|
||||||
def training(fd, c):
|
writer.write(fd, silence)
|
||||||
for b in train.equalizer:
|
symbols = equalizer.train_symbols(train.equalizer_length)
|
||||||
writer.write(fd, c * b)
|
signal = equalizer.modulator(symbols)
|
||||||
|
writer.write(fd, signal)
|
||||||
|
writer.write(fd, silence)
|
||||||
|
|
||||||
|
|
||||||
def modulate(fd, bits):
|
def modulate(fd, bits):
|
||||||
@@ -63,8 +67,7 @@ def main(args):
|
|||||||
writer.write(args.output, np.zeros(int(config.Fs * args.silence_start)))
|
writer.write(args.output, np.zeros(int(config.Fs * args.silence_start)))
|
||||||
|
|
||||||
start(args.output, modem.carriers[config.carrier_index])
|
start(args.output, modem.carriers[config.carrier_index])
|
||||||
for c in modem.carriers:
|
|
||||||
training(args.output, c)
|
|
||||||
training_size = writer.offset
|
training_size = writer.offset
|
||||||
log.info('%.3f seconds of training audio',
|
log.info('%.3f seconds of training audio',
|
||||||
training_size / wave.bytes_per_second)
|
training_size / wave.bytes_per_second)
|
||||||
|
|||||||
Reference in New Issue
Block a user