diff --git a/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_tacotron2.rs b/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_tacotron2.rs index 1fe76abaf7..fe7a6b7edd 100644 --- a/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_tacotron2.rs +++ b/crates/lib/mysql_queries/src/queries/media_files/create/insert_media_file_from_tacotron2.rs @@ -20,11 +20,9 @@ pub struct InsertMediaFileArgs<'a> { pub maybe_mime_type: Option<&'a str>, pub file_size_bytes: u64, - pub duration_millis: u64, pub sha256_checksum: &'a str, - - // TODO: Media duration. - //pub duration_millis: u64, + pub maybe_duration_millis: Option, + pub maybe_audio_codec_name: Option<&'a str>, pub public_bucket_directory_hash: &'a str, pub maybe_public_bucket_prefix: Option<&'a str>, @@ -90,6 +88,9 @@ SET maybe_mime_type = ?, file_size_bytes = ?, + maybe_duration_millis = ?, + maybe_audio_encoding = ?, + checksum_sha2 = ?, public_bucket_directory_hash = ?, @@ -124,6 +125,9 @@ SET args.maybe_mime_type, args.file_size_bytes, + args.maybe_duration_millis, + args.maybe_audio_codec_name, + args.sha256_checksum, args.public_bucket_directory_hash, diff --git a/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/process_job.rs b/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/process_job.rs index 15cefb3977..d876aad81e 100644 --- a/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/process_job.rs +++ b/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/process_job.rs @@ -11,6 +11,7 @@ use errors::AnyhowResult; use filesys::check_file_exists::check_file_exists; use filesys::safe_delete_temp_directory::safe_delete_temp_directory; use filesys::safe_delete_temp_file::safe_delete_temp_file; +use media::decode_basic_audio_info::decode_basic_audio_file_info; use migration::text_to_speech::get_tts_model_for_run_inference_migration::TtsModelForRunInferenceMigrationWrapper; use mysql_queries::column_types::vocoder_type::VocoderType; use mysql_queries::queries::generic_inference::job::list_available_generic_inference_jobs::AvailableInferenceJob; @@ -309,6 +310,17 @@ async fn process_job_with_cleanup( safe_delete_temp_file(&output_metadata_fs_path); + info!("Decoding audio info..."); + + // NB: The metadata file emitted by tacotron2 hasn't been recording the audio duration recently. (Perhaps it never worked?) + let mut maybe_audio_duration_millis = file_metadata.duration_millis.clone(); + let mut maybe_audio_codec_name = None; + + if let Ok(audio_info) = decode_basic_audio_file_info(&output_audio_fs_path, Some("audio/wav"), None) { + maybe_audio_duration_millis = audio_info.duration_millis; + maybe_audio_codec_name = audio_info.codec_name; + } + // ==================== UPLOAD FILES AND SAVE RECORD ==================== // let inference_result = upload_results(UploadResultArgs { @@ -319,6 +331,8 @@ async fn process_job_with_cleanup( work_temp_dir, pretrained_vocoder, file_metadata: &file_metadata, + maybe_audio_duration_millis, + maybe_audio_codec_name: maybe_audio_codec_name.as_deref(), output_audio_fs_path: &output_audio_fs_path, output_spectrogram_fs_path: &output_spectrogram_fs_path, upload_as_media_file: model_dependencies.upload_as_media_file, diff --git a/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/upload_results.rs b/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/upload_results.rs index 756c478ff9..df1dbab6ff 100644 --- a/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/upload_results.rs +++ b/crates/service/job/inference_job/src/job/job_types/tts/tacotron2_v2_early_fakeyou/upload_results.rs @@ -38,6 +38,8 @@ pub struct UploadResultArgs<'a> { // Outputs pub file_metadata: &'a FileMetadata, + pub maybe_audio_duration_millis: Option, + pub maybe_audio_codec_name: Option<&'a str>, pub output_audio_fs_path: &'a Path, pub output_spectrogram_fs_path: &'a Path, @@ -107,7 +109,8 @@ async fn upload_as_media_file(args: UploadResultArgs<'_>) -> Result