Files
Robovoice/Robovoice.App/VoiceManagerForm.Designer.cs
T
mute 8585972a1e v0.1: Robovoice — PTT re-voicing app
WinForms tray app that captures text (from file or direct input) and
synthesizes speech via libpiper (Piper TTS), outputting to any audio
device (VB-CABLE for virtual mic routing).

Features:
- Global PTT hotkey (configurable F1-F12) via WH_KEYBOARD_LL
- Text file sequential reader (line-by-line on each PTT cycle)
- Direct text input with Speak button
- Voice manager: browse 147-voice Piper catalogue, download, remove
- libpiper P/Invoke wrapper with UTF-8 marshaling, streaming chunks
- BufferedWaveProvider streaming playback with trailing silence flush
- Sentence terminator auto-append (fixes espeak-ng final-word drop)
- Tray icon with minimize-to-tray

Architecture:
- Robovoice.Core: ITtsEngine, ISttSource interfaces, voice catalogue
- Robovoice.Tts.LibPiper: P/Invoke wrapper for libpiper.dll
- Robovoice.Stt.File: text file STT source (testing without mic server)
- Robovoice.Stt.Udp: UDP client stub (for future Linux mic server)
- Robovoice.App: WinForms UI, orchestrator, PTT hotkey, audio output
2026-08-10 11:27:28 +00:00

117 lines
4.0 KiB
C#

namespace Robovoice.App;
partial class VoiceManagerForm
{
private System.ComponentModel.IContainer? components = null;
private Label lblFilter = null!;
private TextBox txtFilter = null!;
private DataGridView gridVoices = null!;
private Button btnDownload = null!;
private Button btnRemove = null!;
private Button btnClose = null!;
private Label lblStatus = null!;
private ProgressBar progressBar = null!;
protected override void Dispose(bool disposing)
{
if (disposing && components != null)
components.Dispose();
base.Dispose(disposing);
}
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
lblFilter = new Label();
txtFilter = new TextBox();
gridVoices = new DataGridView();
btnDownload = new Button();
btnRemove = new Button();
btnClose = new Button();
lblStatus = new Label();
progressBar = new ProgressBar();
((System.ComponentModel.ISupportInitialize)gridVoices).BeginInit();
SuspendLayout();
// lblFilter
lblFilter.Text = "Filter:";
lblFilter.Location = new Point(12, 15);
lblFilter.Size = new Size(45, 23);
lblFilter.TextAlign = ContentAlignment.MiddleLeft;
// txtFilter
txtFilter.Location = new Point(60, 12);
txtFilter.Size = new Size(300, 23);
// gridVoices
gridVoices.Location = new Point(12, 42);
gridVoices.Size = new Size(660, 380);
gridVoices.AllowUserToAddRows = false;
gridVoices.AllowUserToDeleteRows = false;
gridVoices.AllowUserToResizeRows = false;
gridVoices.ReadOnly = true;
gridVoices.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
gridVoices.MultiSelect = false;
gridVoices.RowHeadersVisible = false;
gridVoices.BackgroundColor = SystemColors.Window;
gridVoices.BorderStyle = BorderStyle.FixedSingle;
gridVoices.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal;
gridVoices.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
gridVoices.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
// btnDownload
btnDownload.Text = "Download";
btnDownload.Location = new Point(12, 430);
btnDownload.Size = new Size(90, 28);
btnDownload.UseVisualStyleBackColor = true;
// btnRemove
btnRemove.Text = "Remove";
btnRemove.Location = new Point(108, 430);
btnRemove.Size = new Size(90, 28);
btnRemove.UseVisualStyleBackColor = true;
// btnClose
btnClose.Text = "Close";
btnClose.Location = new Point(582, 430);
btnClose.Size = new Size(90, 28);
btnClose.UseVisualStyleBackColor = true;
// lblStatus
lblStatus.Text = "";
lblStatus.Location = new Point(12, 465);
lblStatus.Size = new Size(660, 20);
lblStatus.TextAlign = ContentAlignment.MiddleLeft;
lblStatus.ForeColor = Color.DarkBlue;
// progressBar
progressBar.Location = new Point(208, 433);
progressBar.Size = new Size(360, 23);
progressBar.Visible = false;
// VoiceManagerForm
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(684, 495);
Controls.Add(lblFilter);
Controls.Add(txtFilter);
Controls.Add(gridVoices);
Controls.Add(btnDownload);
Controls.Add(btnRemove);
Controls.Add(btnClose);
Controls.Add(lblStatus);
Controls.Add(progressBar);
MinimumSize = new Size(700, 535);
Text = "Voice Manager";
FormBorderStyle = FormBorderStyle.FixedSingle;
MaximizeBox = false;
StartPosition = FormStartPosition.CenterParent;
((System.ComponentModel.ISupportInitialize)gridVoices).EndInit();
ResumeLayout(false);
}
}