Skip to content

Commit

Permalink
Run OSC message sending
Browse files Browse the repository at this point in the history
  • Loading branch information
ButterscotchV committed Jan 30, 2024
1 parent 91844fe commit 96dc761
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
6 changes: 5 additions & 1 deletion ButterSTT/MessageSystem/OSCMessageHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public class OSCMessageHandler
private CancellationTokenSource? _messageLoopCancelSource;
private Task? _messageLoop;

private string _lastMessage = "";

public bool IsLoopRunning => _messageLoop != null && !_messageLoop.IsCompleted;

public void StartMessageLoop()
Expand Down Expand Up @@ -60,7 +62,7 @@ private void SendMessage()
try
{
var message = MessageQueue.GetCurrentMessage();
if (string.IsNullOrWhiteSpace(message))
if (string.IsNullOrWhiteSpace(message) || message == _lastMessage)
return;

var chatbox = OSCHandler.MakeChatboxInput(message);
Expand All @@ -76,6 +78,8 @@ private void SendMessage()
new OscBundle(0, chatbox, OSCHandler.MakeChatboxTyping(true))
);
}

_lastMessage = message;
}
catch (Exception ex)
{
Expand Down
6 changes: 5 additions & 1 deletion ButterSTT/Program.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using ButterSTT;
using ButterSTT.MessageSystem;

// Setup model dir
var modelsDir = Path.GetFullPath("Models");
Expand All @@ -13,7 +14,10 @@
$"Could not find any available AprilAsr models (*.april) in \"{modelsDir}\"."
);

using var speechToTextHandler = new SpeechToTextHandler(modelPath);
var oscHandler = new OSCMessageHandler();
oscHandler.StartMessageLoop();

using var speechToTextHandler = new SpeechToTextHandler(modelPath, oscHandler.MessageQueue);
speechToTextHandler.StartRecording();

Console.ReadLine();
18 changes: 11 additions & 7 deletions ButterSTT/SpeechToTextHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,19 @@ public class SpeechToTextHandler : IDisposable
// Output
private readonly StringBuilder _consoleOutput = new();
private readonly StringBuilder _aprilOutput = new();
private readonly OSCMessageHandler _oscHandler = new();
private readonly MessageQueue _messageQueue;

public int WaveDeviceNumber { get; private set; } = 0;
public bool MicrophoneRecording { get; private set; } = false;

public SpeechToTextHandler(string modelPath, int deviceNumber = 0)
public SpeechToTextHandler(
string modelPath,
MessageQueue messageQueue,
int deviceNumber = 0
)
{
_messageQueue = messageQueue;

// Load model
_model = new AprilModel(modelPath);
ModelPath = modelPath;
Expand Down Expand Up @@ -145,17 +151,15 @@ private void OnAprilTokens(AprilResultKind result, AprilToken[] tokens)

if (result == AprilResultKind.FinalRecognition)
{
_oscHandler.MessageQueue.CurParagraph = EnglishTextParser.ParseParagraph(
_messageQueue.CurParagraph = EnglishTextParser.ParseParagraph(
aprilOutputString,
wordRegex: EnglishTextParser.WordKeepUrl()
);
_oscHandler.MessageQueue.FinishCurrentParagraph();
_messageQueue.FinishCurrentParagraph();
}
else
{
_oscHandler.MessageQueue.CurParagraph = EnglishTextParser.ParseParagraph(
aprilOutputString
);
_messageQueue.CurParagraph = EnglishTextParser.ParseParagraph(aprilOutputString);
}

_consoleOutput.Append(aprilOutputString);
Expand Down

0 comments on commit 96dc761

Please sign in to comment.