Switch to tdsr speech server

master
Talon 2022-03-05 16:48:32 +01:00
parent a83e1a79a1
commit 2c845abb23
2 changed files with 116 additions and 18 deletions

View File

@ -20,12 +20,18 @@ namespace stardew_access.ScreenReader
public void InitializeScreenReader()
{
MainClass.GetMonitor().Log("Screen reader initialized");
_speakProcess = new Process();
_speakProcess.StartInfo.FileName = "mac";
_speakProcess.StartInfo.Verb = "mac";
_speakProcess.StartInfo.RedirectStandardInput = true;
_speakProcess.Start();
Speak("Mac screen reader ready", true);
}
public void CloseScreenReader()
{
MainClass.GetMonitor().Log("Screen reader closed");
_speakProcess.Kill();
}
public void Say(string text, bool interrupt)
@ -39,7 +45,8 @@ namespace stardew_access.ScreenReader
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevText) {
if (text != prevText)
{
Speak(text, interrupt);
prevText = text;
}
@ -49,7 +56,8 @@ namespace stardew_access.ScreenReader
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevMenuText) {
if (text != prevMenuText)
{
Speak(text, interrupt);
prevMenuText = text;
}
@ -59,7 +67,8 @@ namespace stardew_access.ScreenReader
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevChatText) {
if (text != prevChatText)
{
Speak(text, interrupt);
prevChatText = text;
}
@ -69,28 +78,21 @@ namespace stardew_access.ScreenReader
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevTextTile) {
if (text != prevTextTile)
{
Speak(text, interrupt);
prevTextTile = text;
}
}
private void Speak(string text, bool interupt) {
if (interupt) {
if (_speakProcess != null) {
_speakProcess.Kill();
_speakProcess = null;
}
}
if (_speakProcess == null) {
_speakProcess = new Process();
_speakProcess.StartInfo.FileName = "say";
_speakProcess.StartInfo.Verb = "say";
_speakProcess.StartInfo.RedirectStandardInput = true;
_speakProcess.StartInfo.Arguments = text;
_speakProcess.Start();
private void Speak(string text, bool interupt)
{
if (interupt)
{
_speakProcess.StandardInput.WriteLine("x");
}
_speakProcess.StandardInput.WriteLine($"s{text}");
}
}
}

View File

@ -0,0 +1,96 @@
using System;
using System.Diagnostics;
using System.IO;
namespace stardew_access.ScreenReader
{
public class ScreenReaderMacOld : IScreenReader
{
private Process? _speakProcess;
public string PrevTextTile
{
get;
set;
}
public string prevText = "", prevTextTile = " ", prevChatText = "", prevMenuText = "";
public void InitializeScreenReader()
{
MainClass.GetMonitor().Log("Screen reader initialized");
Speak("Mac screen reader ready", true);
}
public void CloseScreenReader()
{
MainClass.GetMonitor().Log("Screen reader closed");
}
public void Say(string text, bool interrupt)
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
Speak(text, interrupt);
}
public void SayWithChecker(string text, bool interrupt)
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevText) {
Speak(text, interrupt);
prevText = text;
}
}
public void SayWithMenuChecker(string text, bool interrupt)
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevMenuText) {
Speak(text, interrupt);
prevMenuText = text;
}
}
public void SayWithChatChecker(string text, bool interrupt)
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevChatText) {
Speak(text, interrupt);
prevChatText = text;
}
}
public void SayWithTileQuery(string text, int x, int y, bool interrupt)
{
if (text == null) return;
MainClass.GetMonitor().Log($"{text}");
if (text != prevTextTile) {
Speak(text, interrupt);
prevTextTile = text;
}
}
private void Speak(string text, bool interupt) {
if (interupt) {
if (_speakProcess != null) {
_speakProcess.Kill();
_speakProcess = null;
}
}
if (_speakProcess == null) {
_speakProcess = new Process();
_speakProcess.StartInfo.FileName = "say";
_speakProcess.StartInfo.Verb = "say";
_speakProcess.StartInfo.RedirectStandardInput = true;
_speakProcess.StartInfo.Arguments = text;
_speakProcess.Start();
}
}
}
}