mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-03 00:47:53 +00:00
Protobufs UP and DOWN. Sounds great!
This commit is contained in:
1 parent
05b703068a
commit
b38c96ae2f
5 files changed
+38
-21
No files matched your search
@@ -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
@@ -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
@@ -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
@@ -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) => {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user