Protobufs UP and DOWN. Sounds great!

This commit is contained in:
Brandon Thomas committed 2019-10-20 02:04:41 -04:00
1 parent 05b703068a
commit b38c96ae2f
5 files changed
+38 -21

No files matched your search

+11 -4
View File
@@ -19,7 +19,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
name='protos/audio.proto',
package='voder_audio',
syntax='proto3',
serialized_pb=_b('\n\x12protos/audio.proto\x12\x0bvoder_audio\"\x84\x01\n\x12VocodeAudioRequest\x12\x13\n\x0b\x66loat_audio\x18\x01 \x03(\x02\x12\x13\n\x0bsample_rate\x18\x02 \x01(\x05\x12\x13\n\x0bskip_vocode\x18\x03 \x01(\x08\x12\x12\n\nsave_files\x18\x04 \x01(\x08\x12\x1b\n\x13\x62uffer_size_minimum\x18\x05 \x01(\x05\"*\n\x13VocodeAudioResponse\x12\x13\n\x0b\x66loat_audio\x18\x01 \x03(\x02\x62\x06proto3')
serialized_pb=_b('\n\x12protos/audio.proto\x12\x0bvoder_audio\"\x99\x01\n\x12VocodeAudioRequest\x12\x13\n\x0b\x66loat_audio\x18\x01 \x03(\x02\x12\x13\n\x0bsample_rate\x18\x02 \x01(\x05\x12\x13\n\x0bskip_vocode\x18\x03 \x01(\x08\x12\x12\n\nsave_files\x18\x04 \x01(\x08\x12\x1b\n\x13\x62uffer_size_minimum\x18\x05 \x01(\x05\x12\x13\n\x0boutput_rate\x18\x06 \x01(\x05\"*\n\x13VocodeAudioResponse\x12\x13\n\x0b\x66loat_audio\x18\x01 \x03(\x02\x62\x06proto3')
)
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
@@ -68,6 +68,13 @@ _VOCODEAUDIOREQUEST = _descriptor.Descriptor(
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
_descriptor.FieldDescriptor(
name='output_rate', full_name='voder_audio.VocodeAudioRequest.output_rate', index=5,
number=6, type=5, cpp_type=1, label=1,
has_default_value=False, default_value=0,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
],
extensions=[
],
@@ -81,7 +88,7 @@ _VOCODEAUDIOREQUEST = _descriptor.Descriptor(
oneofs=[
],
serialized_start=36,
serialized_end=168,
serialized_end=189,
)
@@ -111,8 +118,8 @@ _VOCODEAUDIORESPONSE = _descriptor.Descriptor(
extension_ranges=[],
oneofs=[
],
serialized_start=170,
serialized_end=212,
serialized_start=191,
serialized_end=233,
)
DESCRIPTOR.message_types_by_name['VocodeAudioRequest'] = _VOCODEAUDIOREQUEST
+16 -13
View File
@@ -125,7 +125,7 @@ def temp_file_name(suffix='.wav'):
name = os.path.basename(temp_file.name)
return os.path.join(TEMP_DIR.name, name)
def convert(audio, skip_vocode = False, save_files = False, source_rate = 44100):
def convert(audio, skip_vocode = False, save_files = False, source_rate = 44100, output_rate = 44100):
#audio = np.array(audio, dtype=np.int16)
#audio = np.array(audio, dtype=np.float32)
audio = np.array(audio, dtype=np.float32)
@@ -138,12 +138,13 @@ def convert(audio, skip_vocode = False, save_files = False, source_rate = 44100)
print('----- Original wav file out: {}'.format(filename))
scipy.io.wavfile.write(filename, source_rate, audio)
audio = librosa.resample(audio, source_rate, 16000)
if save_files:
filename = temp_file_name('.wav')
print('----- Downsampled file out: {}'.format(filename))
scipy.io.wavfile.write(filename, 16000, audio)
if source_rate != 16000:
print("Resampling audio from {} Hz to 16000 Hz".format(source_rate))
audio = librosa.resample(audio, source_rate, 16000)
if save_files:
filename = temp_file_name('.wav')
print('----- Downsampled file out: {}'.format(filename))
scipy.io.wavfile.write(filename, 16000, audio)
if skip_vocode:
return audio
@@ -152,13 +153,12 @@ def convert(audio, skip_vocode = False, save_files = False, source_rate = 44100)
#results = audio[:]
#consume_rate = 68000 # Experimentally determined for Rust lib 'CPAL'
consume_rate = 44100
upsampled = librosa.resample(results, 16000, consume_rate)
upsampled = librosa.resample(results, 16000, output_rate)
if save_files:
filename = temp_file_name('.wav')
print('----- Upsampled (transformed) file out: {}'.format(filename))
scipy.io.wavfile.write(filename, consume_rate, upsampled)
scipy.io.wavfile.write(filename, output_rate, upsampled)
return upsampled
@@ -185,12 +185,15 @@ def main():
#results = queue[:]
results = convert(queue,
source_rate = vocode_request.sample_rate,
output_rate = vocode_request.output_rate,
skip_vocode = vocode_request.skip_vocode,
save_files = vocode_request.save_files)
queue = []
layout = '<' + ('f' * len(results))
result_bytes = struct.pack(layout, *results)
socket.send(result_bytes)
vocode_response = VocodeAudioResponse()
vocode_response.float_audio[:] = results
socket.send(vocode_response.SerializeToString())
else:
# Must send reply back to client
socket.send(b"OK")
+3 -1
View File
@@ -12,9 +12,11 @@ message VocodeAudioRequest {
// How big we let the buffer grow before running 'convert'.
int32 buffer_size_minimum = 5;
// Requested output rate
int32 output_rate = 6;
}
message VocodeAudioResponse {
repeated float float_audio = 1;
}
+5 -3
View File
@@ -102,6 +102,7 @@ fn run_cpal_audio() -> Result<(), failure::Error> {
let mut vocode_request = VocodeAudioRequest::default();
vocode_request.sample_rate = 16000;
vocode_request.output_rate = 16000;
vocode_request.skip_vocode = true;
vocode_request.save_files = false;
vocode_request.buffer_size_minimum = 100000;
@@ -162,12 +163,13 @@ fn run_cpal_audio() -> Result<(), failure::Error> {
//println!("---> Buf len: {}", buf.len());
if buf.len() > 2 {
// Receive data condition.
let mut cur = Cursor::new(buf);
let vocode_response = VocodeAudioResponse::decode(buf).unwrap();
/*let mut cur = Cursor::new(buf);
let mut floats : Vec<f32> = Vec::new();
while let Ok(val) = cur.read_f32::<LittleEndian>() {
floats.push(val);
}
post_process_queue.extend(floats);
}*/
post_process_queue.extend(vocode_response.float_audio);
}
},
Err(e) => {
+3
View File
@@ -13,6 +13,9 @@ pub struct VocodeAudioRequest {
/// How big we let the buffer grow before running 'convert'.
#[prost(int32, tag="5")]
pub buffer_size_minimum: i32,
/// Requested output rate
#[prost(int32, tag="6")]
pub output_rate: i32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct VocodeAudioResponse {