-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDirectory.Packages.props
More file actions
127 lines (108 loc) · 6.85 KB
/
Copy pathDirectory.Packages.props
File metadata and controls
127 lines (108 loc) · 6.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup Label="Speech to text">
<!-- whisper.cpp bindings. The Runtime packages are build-time only and drop native
DLLs into runtimes/<backend>/win-x64; no RuntimeIdentifier is required. They flow
into the CLI and App output through Core's ProjectReference, so only Core needs
to reference them.
Two runtimes ship side by side and Whisper.net picks between them on first load
(see WhisperRuntime): Vulkan when the machine has a Vulkan-capable GPU, the plain
CPU build otherwise. Both are required - the Vulkan package carries only the
Vulkan-enabled whisper.dll, so without the CPU package a machine with no usable
GPU would have nothing to fall back to.
WHY VULKAN AND NOT CUDA. Measured here on an RTX 3080 with large-v3-turbo over
162 s of speech, warm, flash attention on:
CPU 2.1x realtime
Vulkan ~80x realtime
CUDA (13.1 cuBLAS) ~78x realtime
So CUDA buys nothing over Vulkan on Ampere, and it costs a great deal to get:
Whisper.net.Runtime.Cuda.Windows is 154 MB of native payload copied into every
build output, and it is inert on its own because ggml-cuda-whisper.dll links
against cublas64_13.dll, which only arrives with a multi-gigabyte CUDA Toolkit
install. Vulkan needs vulkan-1.dll, which every current NVIDIA, AMD and Intel
driver already installs.
The CUDA runtime is still opt-in for anyone whose hardware does prefer it - build
with `dotnet build -p:WhisperCudaRuntime=true` and WhisperRuntime will pick it up
ahead of Vulkan with no code change. -->
<PackageVersion Include="Whisper.net" Version="1.9.1" />
<PackageVersion Include="Whisper.net.Runtime" Version="1.9.1" />
<PackageVersion Include="Whisper.net.Runtime.Vulkan" Version="1.9.1" />
<PackageVersion Include="Whisper.net.Runtime.Cuda.Windows" Version="1.9.1" />
</ItemGroup>
<ItemGroup Label="Speaker diarization">
<!-- Runs the speaker-embedding model that tells one voice from another. CPU only: the
embedding pass is seconds of work on a meeting-length recording, and a GPU package
would cost far more in install size and driver friction than it saves in time. -->
<PackageVersion Include="Microsoft.ML.OnnxRuntime" Version="1.28.0" />
</ItemGroup>
<ItemGroup Label="Audio capture">
<!-- Referencing the split packages rather than the NAudio meta-package, which would
otherwise drag NAudio.WinForms into a -windows TFM. -->
<PackageVersion Include="NAudio.Core" Version="2.3.0" />
<PackageVersion Include="NAudio.Wasapi" Version="2.3.0" />
</ItemGroup>
<ItemGroup Label="UI">
<PackageVersion Include="Avalonia" Version="12.1.0" />
<PackageVersion Include="Avalonia.Desktop" Version="12.1.0" />
<PackageVersion Include="Avalonia.Themes.Fluent" Version="12.1.0" />
<PackageVersion Include="Avalonia.Fonts.Inter" Version="12.1.0" />
<!-- Deliberately NOT Avalonia.ReactiveUI: it has no 12.x release (highest is 11.3.8). -->
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.2" />
</ItemGroup>
<ItemGroup Label="Note editor">
<!-- AvaloniaEdit gives us the VS Code style editor surface; TextMate + the grammar
bundle supply real markdown/code syntax highlighting and the Dark+ theme. -->
<PackageVersion Include="Avalonia.AvaloniaEdit" Version="12.0.0" />
<PackageVersion Include="AvaloniaEdit.TextMate" Version="12.0.0" />
<PackageVersion Include="TextMateSharp.Grammars" Version="2.0.4" />
<!-- Markdown parsing for the preview pane. Deliberately NOT Avalonia.Controls.Markdown,
which drags in AvaloniaUI.Licensing (commercial Accelerate). Markdig is MIT and we
render its AST into native Avalonia controls ourselves. -->
<PackageVersion Include="Markdig" Version="1.3.2" />
</ItemGroup>
<ItemGroup Label="Note export">
<!-- Stable MIT-licensed PDFsharp build for the repository's Windows target framework. -->
<PackageVersion Include="PDFsharp-GDI" Version="6.2.4" />
<!-- Pin a stable compatible logging abstraction so transitive restores do not float. -->
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0" />
</ItemGroup>
<ItemGroup Label="AI">
<!-- Official Anthropic SDK. Ollama is spoken to over plain HttpClient. -->
<PackageVersion Include="Anthropic" Version="12.39.0" />
</ItemGroup>
<ItemGroup Label="CLI">
<PackageVersion Include="System.CommandLine" Version="2.0.10" />
</ItemGroup>
<ItemGroup Label="Tests">
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
</ItemGroup>
<ItemGroup Label="Code quality">
<!-- Adds the `Metrics` MSBuild target so `dotnet build /t:Metrics` emits a per-member
code-metrics XML report. Build-time only: PrivateAssets="all" in
Directory.Build.props, and the target only runs when invoked by name, so it has
zero effect on an ordinary build. The CA15xx metric *rules* that actually gate
the build ship with the SDK analyzers - this package only adds the report.
KNOWN BROKEN, pinned deliberately at 4.14.0:
* 5.x (5.0.0 / 5.3.0 / 5.6.0) ships without the `Metrics/BuildHost-*` payload
its own MSBuildWorkspace needs, so `/t:Metrics` fails outright with
MSB3073 ("The build host could not be found"). Transplanting the BuildHost
from Microsoft.CodeAnalysis.Workspaces.MSBuild 5.6.0 does not fix it - the
host handshake then dies with "The pipe has been ended".
* 4.14.0 runs to completion but its net472 MSBuildWorkspace cannot design-time
build an SDK-style project here, so it emits an assembly-level-only report
with every metric 0. Reproduced on both net10.0-windows/SDK 10 and
net9.0/SDK 9, so it is the tool, not our target framework.
4.14.0 is kept because it degrades quietly instead of failing the build, and the
target starts working for free if/when the packaging is fixed upstream.
To get real numbers today, drive the analyzer itself - it uses the exact same
Roslyn CodeAnalysisMetricData engine that the gate uses. Temporarily lower the
thresholds in ./CodeMetricsConfig.txt (e.g. `CA1502: 11` and `CA1505: 100`) and
build: every member then reports its own complexity and maintainability index in
the warning text. Revert the file afterwards. -->
<PackageVersion Include="Microsoft.CodeAnalysis.Metrics" Version="4.14.0" />
</ItemGroup>
</Project>