mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-10-17 22:18:00 +00:00
Added audio and video transcription for chats and assistants (#856)
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Sync Flatpak repo (push) Blocked by required conditions
Build and Release / Collect Flatpak artifacts (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Sync Flatpak repo (push) Blocked by required conditions
Build and Release / Collect Flatpak artifacts (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
This commit is contained in:
1 parent
5dc6282908
commit
aaf77b6882
83 files changed
+5985
-442
No files matched your search
@@ -0,0 +1,7 @@
|
||||
namespace AIStudio.Tools.Rust;
|
||||
|
||||
/// <summary>Request body used to start a Rust media normalization job.</summary>
|
||||
/// <param name="InputPath">Absolute source media path.</param>
|
||||
/// <param name="OutputPath">Absolute operation-owned output path.</param>
|
||||
/// <param name="MaxPassThroughBytes">Optional pass-through size ceiling.</param>
|
||||
public sealed record CreateMediaJobRequest(string InputPath, string OutputPath, ulong? MaxPassThroughBytes = null);
|
||||
@@ -0,0 +1,5 @@
|
||||
namespace AIStudio.Tools.Rust;
|
||||
|
||||
/// <summary>Response returned after a Rust media job is registered.</summary>
|
||||
/// <param name="JobId">Opaque runtime job identifier.</param>
|
||||
public sealed record CreateMediaJobResponse(string JobId);
|
||||
@@ -61,7 +61,7 @@ public static class FileTypes
|
||||
public static readonly FileTypeFilter IMAGE = FileTypeFilter.Leaf(TB("Image"),
|
||||
"jpg", "jpeg", "png", "gif", "bmp", "tiff", "svg", "webp", "heic");
|
||||
public static readonly FileTypeFilter AUDIO = FileTypeFilter.Leaf(TB("Audio"),
|
||||
"mp3", "wav", "wave", "aac", "flac", "ogg", "m4a", "wma", "alac", "aiff", "m4b");
|
||||
"mp3", "wav", "wave", "aac", "flac", "ogg", "opus", "m4a", "m4b", "wma", "alac", "aif", "aiff", "caf");
|
||||
public static readonly FileTypeFilter VIDEO = FileTypeFilter.Leaf(TB("Video"),
|
||||
"mp4", "m4v", "avi", "mkv", "mov", "wmv", "flv", "webm");
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace AIStudio.Tools.Rust;
|
||||
|
||||
/// <summary>
|
||||
/// Runtime media error containing a stable code and an English log diagnostic.
|
||||
/// </summary>
|
||||
/// <param name="Code">Stable machine-readable error category.</param>
|
||||
/// <param name="Message">US-English diagnostic intended for logs.</param>
|
||||
public sealed record MediaJobError(MediaJobErrorCode Code, string Message);
|
||||
@@ -0,0 +1,85 @@
|
||||
namespace AIStudio.Tools.Rust;
|
||||
|
||||
/// <summary>
|
||||
/// Stable failure categories returned by the Rust media pipeline.
|
||||
/// </summary>
|
||||
public enum MediaJobErrorCode
|
||||
{
|
||||
/// <summary>The runtime returned an unrecognized code.</summary>
|
||||
UNKNOWN,
|
||||
|
||||
/// <summary>The input file does not exist.</summary>
|
||||
FILE_NOT_FOUND,
|
||||
|
||||
/// <summary>The file type could not be identified.</summary>
|
||||
UNKNOWN_FORMAT,
|
||||
|
||||
/// <summary>Executable input was rejected.</summary>
|
||||
UNSAFE_FILE,
|
||||
|
||||
/// <summary>The input is not media.</summary>
|
||||
NOT_MEDIA,
|
||||
|
||||
/// <summary>The input file could not be opened.</summary>
|
||||
FILE_OPEN_FAILED,
|
||||
|
||||
/// <summary>The container is unsupported.</summary>
|
||||
UNSUPPORTED_CONTAINER,
|
||||
|
||||
/// <summary>The media has no audio track.</summary>
|
||||
NO_AUDIO_TRACK,
|
||||
|
||||
/// <summary>No audio track has a supported decoder.</summary>
|
||||
UNSUPPORTED_CODEC,
|
||||
|
||||
/// <summary>Decoded audio parameters are absent or inconsistent.</summary>
|
||||
INVALID_AUDIO_PARAMETERS,
|
||||
|
||||
/// <summary>The Opus identification header is invalid.</summary>
|
||||
INVALID_OPUS_HEADER,
|
||||
|
||||
/// <summary>The Opus mapping requires unsupported multistream decoding.</summary>
|
||||
UNSUPPORTED_OPUS_MAPPING,
|
||||
|
||||
/// <summary>The decoder could not be initialized.</summary>
|
||||
DECODER_INIT_FAILED,
|
||||
|
||||
/// <summary>The encoder could not be initialized.</summary>
|
||||
ENCODER_INIT_FAILED,
|
||||
|
||||
/// <summary>The stream changed unexpectedly.</summary>
|
||||
STREAM_RESET,
|
||||
|
||||
/// <summary>The container is damaged.</summary>
|
||||
DAMAGED_CONTAINER,
|
||||
|
||||
/// <summary>Audio decoding failed.</summary>
|
||||
DECODE_FAILED,
|
||||
|
||||
/// <summary>Audio resampling failed.</summary>
|
||||
RESAMPLE_FAILED,
|
||||
|
||||
/// <summary>Opus encoding failed.</summary>
|
||||
ENCODE_FAILED,
|
||||
|
||||
/// <summary>The output directory or file could not be created.</summary>
|
||||
OUTPUT_CREATE_FAILED,
|
||||
|
||||
/// <summary>The output could not be written.</summary>
|
||||
OUTPUT_WRITE_FAILED,
|
||||
|
||||
/// <summary>The partial output could not be committed.</summary>
|
||||
OUTPUT_COMMIT_FAILED,
|
||||
|
||||
/// <summary>A WebM relative timestamp overflowed.</summary>
|
||||
WEBM_TIMESTAMP_OVERFLOW,
|
||||
|
||||
/// <summary>WebM serialization failed.</summary>
|
||||
WEBM_WRITE_FAILED,
|
||||
|
||||
/// <summary>The job was cancelled.</summary>
|
||||
CANCELLED,
|
||||
|
||||
/// <summary>The runtime worker failed unexpectedly.</summary>
|
||||
INTERNAL_ERROR,
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace AIStudio.Tools.Rust;
|
||||
|
||||
/// <summary>Snapshot emitted by the Rust media job event stream.</summary>
|
||||
/// <param name="Phase">Current job phase.</param>
|
||||
/// <param name="Progress">Optional progress fraction.</param>
|
||||
/// <param name="Result">Completed result.</param>
|
||||
/// <param name="Error">Failure diagnostic.</param>
|
||||
public sealed record MediaJobEvent(
|
||||
MediaJobPhase Phase,
|
||||
double? Progress,
|
||||
MediaJobResult? Result,
|
||||
MediaJobError? Error);
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace AIStudio.Tools.Rust;
|
||||
|
||||
/// <summary>Lifecycle phases exposed by the Rust media API.</summary>
|
||||
public enum MediaJobPhase
|
||||
{
|
||||
/// <summary>An unknown future value received from Rust.</summary>
|
||||
UNKNOWN,
|
||||
|
||||
/// <summary>The runtime is identifying the input and selecting audio.</summary>
|
||||
PROBING,
|
||||
|
||||
/// <summary>The runtime is normalizing audio.</summary>
|
||||
TRANSCODING,
|
||||
|
||||
/// <summary>The output was committed successfully.</summary>
|
||||
COMPLETED,
|
||||
|
||||
/// <summary>The job failed.</summary>
|
||||
FAILED,
|
||||
|
||||
/// <summary>Cancellation and temporary-output cleanup completed.</summary>
|
||||
CANCELLED,
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
namespace AIStudio.Tools.Rust;
|
||||
|
||||
/// <summary>Successful terminal result returned by Rust media normalization.</summary>
|
||||
/// <param name="OutputPath">Committed normalized output path.</param>
|
||||
/// <param name="OutputFormat">Stable normalized container used for provider uploads.</param>
|
||||
/// <param name="OutputCodec">Stable normalized audio codec used for provider uploads.</param>
|
||||
/// <param name="DetectedFormat">Detected container diagnostic.</param>
|
||||
/// <param name="DetectedCodec">Selected codec diagnostic.</param>
|
||||
/// <param name="DurationMs">Normalized duration in milliseconds.</param>
|
||||
/// <param name="PassThrough">Whether the source was copied unchanged.</param>
|
||||
/// <param name="HasAudibleSignal">Whether the normalized audio exceeds the practical-silence threshold.</param>
|
||||
public sealed record MediaJobResult(
|
||||
string OutputPath,
|
||||
string OutputFormat,
|
||||
string OutputCodec,
|
||||
string DetectedFormat,
|
||||
string DetectedCodec,
|
||||
ulong DurationMs,
|
||||
bool PassThrough,
|
||||
bool HasAudibleSignal);
|
||||
Reference in new issue
Block a user