From dc9983e45bf2384f728cd0fbc738bf5d0daed0bb Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Sun, 20 Oct 2019 01:17:25 -0400 Subject: [PATCH] Protos in python --- README.md | 8 +++ cycle_gan/protos/audio_pb2.py | 129 ++++++++++++++++++++++++++++++++++ cycle_gan/sidecar.py | 3 + src/main.rs | 15 ++-- 4 files changed, 151 insertions(+), 4 deletions(-) create mode 100644 cycle_gan/protos/audio_pb2.py diff --git a/README.md b/README.md index cd6934fcbf..bae255a660 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,14 @@ builder.add_meta_graph_and_variables(self.model.sess, [ builder.save() ``` +Protos +------ +Codegen for Rust is built in. Codegen for Python uses, + +``` +protoc --python_out=cycle_gan protos/audio.proto +``` + Resources --------- diff --git a/cycle_gan/protos/audio_pb2.py b/cycle_gan/protos/audio_pb2.py new file mode 100644 index 0000000000..9136e76864 --- /dev/null +++ b/cycle_gan/protos/audio_pb2.py @@ -0,0 +1,129 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: protos/audio.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='protos/audio.proto', + package='voder_audio', + syntax='proto3', + serialized_pb=_b('\n\x12protos/audio.proto\x12\x0bvoder_audio\"U\n\x12VocodeAudioRequest\x12\x15\n\rinteger_audio\x18\x01 \x03(\x05\x12\x13\n\x0b\x66loat_audio\x18\x02 \x03(\x02\x12\x13\n\x0bskip_vocode\x18\x03 \x01(\x08\"A\n\x13VocodeAudioResponse\x12\x15\n\rinteger_audio\x18\x01 \x03(\x05\x12\x13\n\x0b\x66loat_audio\x18\x02 \x03(\x02\x62\x06proto3') +) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_VOCODEAUDIOREQUEST = _descriptor.Descriptor( + name='VocodeAudioRequest', + full_name='voder_audio.VocodeAudioRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='integer_audio', full_name='voder_audio.VocodeAudioRequest.integer_audio', index=0, + number=1, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='float_audio', full_name='voder_audio.VocodeAudioRequest.float_audio', index=1, + number=2, type=2, cpp_type=6, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='skip_vocode', full_name='voder_audio.VocodeAudioRequest.skip_vocode', index=2, + number=3, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=35, + serialized_end=120, +) + + +_VOCODEAUDIORESPONSE = _descriptor.Descriptor( + name='VocodeAudioResponse', + full_name='voder_audio.VocodeAudioResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='integer_audio', full_name='voder_audio.VocodeAudioResponse.integer_audio', index=0, + number=1, type=5, cpp_type=1, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='float_audio', full_name='voder_audio.VocodeAudioResponse.float_audio', index=1, + number=2, type=2, cpp_type=6, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=122, + serialized_end=187, +) + +DESCRIPTOR.message_types_by_name['VocodeAudioRequest'] = _VOCODEAUDIOREQUEST +DESCRIPTOR.message_types_by_name['VocodeAudioResponse'] = _VOCODEAUDIORESPONSE + +VocodeAudioRequest = _reflection.GeneratedProtocolMessageType('VocodeAudioRequest', (_message.Message,), dict( + DESCRIPTOR = _VOCODEAUDIOREQUEST, + __module__ = 'protos.audio_pb2' + # @@protoc_insertion_point(class_scope:voder_audio.VocodeAudioRequest) + )) +_sym_db.RegisterMessage(VocodeAudioRequest) + +VocodeAudioResponse = _reflection.GeneratedProtocolMessageType('VocodeAudioResponse', (_message.Message,), dict( + DESCRIPTOR = _VOCODEAUDIORESPONSE, + __module__ = 'protos.audio_pb2' + # @@protoc_insertion_point(class_scope:voder_audio.VocodeAudioResponse) + )) +_sym_db.RegisterMessage(VocodeAudioResponse) + + +# @@protoc_insertion_point(module_scope) diff --git a/cycle_gan/sidecar.py b/cycle_gan/sidecar.py index 5f3c69a6e3..d285ecaacd 100755 --- a/cycle_gan/sidecar.py +++ b/cycle_gan/sidecar.py @@ -7,6 +7,7 @@ as a live demonstration of the trained model. Brandon Thomas 2019-07-29 """ +# noinspection PyInterpreter import argparse import io import librosa @@ -24,6 +25,8 @@ import zmq from falcon_multipart.middleware import MultipartMiddleware from model import CycleGAN from preprocess import * +from protos.audio_pb2 import VocodeAudioRequest +from protos.audio_pb2 import VocodeAudioResponse from wsgiref import simple_server print("TensorFlow version: {}".format(tf.version.VERSION)) diff --git a/src/main.rs b/src/main.rs index 7be0161bb1..be3a42c869 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,15 +20,17 @@ pub mod ipc; pub mod protos; pub mod synthesis; -use wavy::*; - use protos::voder_audio::VocodeAudioRequest; use protos::voder_audio::VocodeAudioResponse; +use wavy::*; + + use byteorder::{ByteOrder, BigEndian, LittleEndian, ReadBytesExt}; use cpal::traits::{DeviceTrait, EventLoopTrait, HostTrait}; use failure::_core::time::Duration; use ipc::AudioQueue; +use prost::Message; //use model::load_model; //use model::print_version; use std::collections::VecDeque; @@ -98,6 +100,13 @@ fn run_cpal_audio() -> Result<(), failure::Error> { Some(d) => d, }; + let mut vocode_request = VocodeAudioRequest::default(); + vocode_request.float_audio = drained.clone(); + + let mut encoded_bytes = Vec::with_capacity(vocode_request.encoded_len()); + vocode_request.encode(&mut encoded_bytes).unwrap(); + //println!("Encoded len: {}", vocode_request.encoded_len()); + //println!("Len drained: {}", drained.len()); let mut bytes: Vec = Vec::with_capacity(drained.len()*4); @@ -132,8 +141,6 @@ fn run_cpal_audio() -> Result<(), failure::Error> { } } - let mut outgoing = VocodeAudioRequest::default(); - match socket.send(&bytes, 0) { Ok(_) => { //println!("Sent len: {}", bytes.len());