Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Due to spam on this forum, all posts now need moderator approval.
Entire forum
➜ MUSHclient
➜ Lua
➜ Lua SAPI TTS module
It is now over 60 days since the last post. This thread is closed.
Refresh page
Posted by
| Fiendish
USA (2,535 posts) Bio
Global Moderator |
Date
| Sat 24 Dec 2016 03:24 PM (UTC) Amended on Sat 24 Dec 2016 03:25 PM (UTC) by Fiendish
|
Message
| I took all the expansion work I did on the SAPI text to speech plugin, and spun it out into a Lua module so that it can be used anywhere.
https://github.com/fiendish/MS_Speech_API_Lua
A now modular form of the same plugin is:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE muclient>
<muclient>
<plugin
name="Text_To_Speech"
author="Avi Kelman (Fiendish)"
id="463242566069ebfd1b379ec1"
language="Lua"
purpose="Speaks incoming text using SAPI."
date_written="2010-09-01"
requires="4.60"
version="2.0"
save_state="y"
>
<description trim="y">
Text To Speech Plug-in Commands:
sapi on : turn on automatic speaking of MUD output.
sapi off : turn off automatic speaking of MUD output.
sapi skip : skips one sentence in output stream.
sapi clear : clear the speech output queue.
sapi faster : speeds speech up.
sapi slower : slows speech down.
sapi rate [number] : check or set speech rate to [number].
sapi list voices : list the available TTS voices.
sapi voice [number] : check or set to the given TTS voice number.
sapi test : speak a test phrase.
sapi filtering [number] : check or set punctuation filtering level to [number].
sapi say [text] : speak the given text.
Scripts can also speak stuff by doing:
CallPlugin ("463242566069ebfd1b379ec1", "say", "What to say")
</description>
</plugin>
<aliases>
<alias
match="sapi on"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.unmute()
</send>
</alias>
<alias
match="sapi off"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.mute()
</send>
</alias>
<alias
match="sapi faster"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
SetVariable("engine_Rate", tostring(sapi_interface.faster()))
</send>
</alias>
<alias
match="sapi slower"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
SetVariable("engine_Rate", tostring(sapi_interface.slower()))
</send>
</alias>
<alias
match="sapi voice*"
regexp="n"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
local arg = Trim("%1")
if arg == "" then
sapi_interface.say_current_voice()
else
local index,id = sapi_interface.set_voice_by_number(arg)
SetVariable("engine_Voice_ID", tostring(id))
end
</send>
</alias>
<alias
match="sapi list voices"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.list_voices()
</send>
</alias>
<alias
match="sapi test"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.speech_demo()
</send>
</alias>
<alias
match="sapi rate*"
enabled="n"
regexp="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
local arg = Trim("%1")
if arg == "" then
sapi_interface.say_current_rate()
else
SetVariable("engine_Rate", tostring(sapi_interface.set_rate(arg)))
end
</send>
</alias>
<alias
match="sapi skip"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.skip_sentence()
</send>
</alias>
<alias
match="sapi clear"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.skip_all()
</send>
</alias>
<alias
match="sapi say *"
regexp="n"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.say("%1")
</send>
</alias>
<alias
match="sapi help"
regexp="n"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.say("This help is being spoken but not printed to the screen. To print it to the screen, use: sapi help printed.")
sapi_interface.say(GetPluginInfo(GetPluginID(), 3), true)
</send>
</alias>
<alias
match="sapi help printed"
regexp="n"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="99"
group="speech"
send_to="12"
><send>
print(GetPluginInfo(GetPluginID(), 3), true)
</send>
</alias>
<alias
match="sapi debug"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
sapi_interface.print_spoken()
</send>
</alias>
<alias
match="sapi filtering*"
regexp="n"
enabled="n"
omit_from_log="y"
omit_from_output="y"
sequence="100"
group="speech"
send_to="12"
><send>
local arg = Trim("%1")
if arg == "" then
sapi_interface.say_current_filtering_level()
else
SetVariable("filtering_level", tostring(sapi_interface.set_filtering_level(arg)))
end
</send>
</alias>
</aliases>
<triggers>
</triggers>
<script>
<![CDATA[
function OnPluginInstall ()
sapi_interface = require "sapi_interface"
if sapi_interface == -1 then
print([[
Could not open SAPI.
Note for Linux and Mac OS users...
SAPI speech functionality depends on the Microsoft Speech API.
This is not included by default in Wine, and SpeechSDK51.exe must be separately installed.
You can download it from http://download.microsoft.com/download/B/4/3/B4314928-7B71-4336-9DE7-6FA4CF00B7B3/SpeechSDK51.exe
]])
sapi_interface = nil
return
end
if sapi_interface == -2 then
print("No SAPI voices found.")
sapi_interface = nil
return
end
local new_filter = tonumber(GetVariable("filtering_level"))
if new_filter then
sapi_interface.set_filtering_level(new_filter, true)
end
local new_rate = tonumber(GetVariable("engine_Rate"))
if new_rate then
sapi_interface.set_rate(new_rate, true)
end
local new_voice = GetVariable("engine_Voice_ID")
if new_voice then
sapi_interface.set_voice_by_id(new_voice, true)
end
EnableGroup("speech", true)
sapi_interface.say("SAPI Plugin installed and is ready")
sapi_interface.speech_demo()
end
local installed = false
function OnPluginListChanged()
if not installed then
installed = true -- to prevent reading MUSHclient's Added/Reinstalled plugin messages
end
end
-- here to draw the screen
function OnPluginScreendraw (t, log, line)
if installed and sapi_interface and (t == 0 or t == 1) then
sapi_interface.say(line)
end
end
function OnPluginTabComplete (line)
if sapi_interface then
sapi_interface.say(line)
end
end
]]>
</script>
</muclient>
|
https://github.com/fiendish/aardwolfclientpackage | Top |
|
Posted by
| Nick Gammon
Australia (23,140 posts) Bio
Forum Administrator |
Date
| Reply #1 on Tue 27 Dec 2016 04:53 AM (UTC) |
Message
| Very good, thank you. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
8,798 views.
It is now over 60 days since the last post. This thread is closed.
Refresh page
top