Added speak_all_private_messages and the script now uses spd-say, not espeak-ng to prevent speaking over itself!
This commit is contained in:
parent
1b04e1e429
commit
f59fb1ed48
16
README.md
16
README.md
@ -3,7 +3,7 @@
|
||||
|
||||
Adds speech to some events.
|
||||
|
||||
This script requires you have espeak-ng installed and in your path.
|
||||
This script requires you have speech-dispatcher installed and spd-say in your path.
|
||||
|
||||
## Usage
|
||||
Place autospeak.pl in .irssi/scripts/
|
||||
@ -23,22 +23,24 @@ This install script creates the folder ~/.irssi/scripts/autorun if it doesn't ex
|
||||
|
||||
## Configuration
|
||||
This script has some settings. Use the /set command to set them.
|
||||
- speech_voice <voice> - espeak-ng voice to use (default is en-us)
|
||||
- speech_rate <digits> - speech rate in words per minute (default is 175)
|
||||
- speak_public_messages <on/off> - Speak public messages; This does not speak all messages. This only speaks when you are directly spoken to. (Default is on)
|
||||
- speech_voice <voice> - espd-say voice to use (default is en-us)
|
||||
- speech_rate <digits> - speech rate(-100 to 100) (default is 50)
|
||||
- speech_module <module> - Speech dispatcher output module to use (Default is espeak-ng)
|
||||
- speak_public_messages <on/off> - Speak public messages; This does not speak all messages by default. [See the next setting.] This only speaks when you are directly spoken to. (Default is on)
|
||||
- speak_all_public_message <on/off> - Speak every single message reguardless of if you are mensioned or not. (Default is off)
|
||||
- speak_indirect_messages - Speaks indirect messages in public channels, reguardless of where your nick sits in the message; If this if off, public messages will only pseak if directly addressed to you. (Default is off)
|
||||
- speak_private_messages <on/off> - Speaks incoming private messages. (Default is on)
|
||||
- speak_active_window <on/off> - Speaks the currently focused window (Default is off)
|
||||
- speak_dcc_messages <on/off> - Speaks DCC messages; Notifys if a file transfer or dcc chat request.
|
||||
|
||||
### Explanation of Public Message Speaking
|
||||
This script is designed not to be very spammy. Public messages only speak when you are directly addressed, unless you have the speak_indirect_message setting on, then it speaks no matter where in the message you are mensioned.
|
||||
This script is designed not to be very spammy. Public messages only speak when you are directly addressed, unless you have the speak_indirect_message setting on, then it speaks no matter where in the message you are mensioned. If you want all messages spoken, enable speak_all_public_messages
|
||||
|
||||
#### Examples
|
||||
When only speak_public_messages is on,
|
||||
|
||||
"<someone> jticket: Hi there!" Will be spoken.
|
||||
"<someone> Hi there jticket!" will not automatically be spoken.
|
||||
"<someone> This is a test" Will never be spoken automatically.
|
||||
"<someone> This is a test" Will never be spoken automatically unless speak_all_public_messages is on.
|
||||
|
||||
When speak_public_messages and speak_indirect_messages is on, both will be spoken, but the last will still not be spoken.
|
||||
When speak_public_messages and speak_indirect_messages is on, both will be spoken, but the last will still not be spoken unless you set speak_all_public_messages to on.
|
||||
|
22
autospeak.pl
22
autospeak.pl
@ -44,8 +44,9 @@ sub speak_message {
|
||||
$body = decode(ENCODING, $body);
|
||||
my $SpeechRate = Irssi::settings_get_int("speech_rate");
|
||||
my $SpeechVoice = Irssi::settings_get_str("speech_voice");
|
||||
my $SpeechModule = Irssi::settings_get_str("speech_module");
|
||||
# Speak The Message
|
||||
system("espeak-ng -v $SpeechVoice -s $SpeechRate \"$summary $body\"&");
|
||||
system("spd-say -P important -y $SpeechVoice -r $SpeechRate -o $SpeechModule \"$summary $body\"&");
|
||||
}
|
||||
|
||||
# Handle incoming public messages:
|
||||
@ -67,12 +68,23 @@ sub message_public {
|
||||
# Get the user's nick name:
|
||||
my $user = $server->{nick};
|
||||
|
||||
#check to notify about all messages:
|
||||
if ((Irssi::settings_get_bool('speak_all_public_messages')) == 1) {
|
||||
# Get the server's tag:
|
||||
my $tag = $server->{tag};
|
||||
|
||||
# Prepare the message body:
|
||||
(my $body = $message) =~ s/^$user[\s:,]\s*//;
|
||||
|
||||
# Notify the user about the incoming public message:
|
||||
speak_message("Message from $nick/$tag on $target:", $body);
|
||||
}
|
||||
# Check whether to notify the user about indirect messages:
|
||||
unless (Irssi::settings_get_bool('speak_indirect_messages')) {
|
||||
elsif ((Irssi::settings_get_bool('speak_indirect_messages')) == 0) {
|
||||
# Ignore messages that are not explicitly addressed to the user:
|
||||
return if ($message !~ /^$user[\s:,]/);
|
||||
}
|
||||
else {
|
||||
else {
|
||||
# Ignore messages that do not mention the user:
|
||||
return if ($message !~ /\b$user\b/);
|
||||
}
|
||||
@ -177,10 +189,12 @@ sub dcc_chat_message {
|
||||
}
|
||||
|
||||
# Register configuration options:
|
||||
Irssi::settings_add_int("autospeak", "speech_rate", 175);
|
||||
Irssi::settings_add_int("autospeak", "speech_rate", 50);
|
||||
Irssi::settings_add_str("autospeak", "speech_voice", "en-us");
|
||||
Irssi::settings_add_str("autospeak", "speech_module", "espeak-ng");
|
||||
Irssi::settings_add_bool('autospeak', 'speak_private_messages', 1);
|
||||
Irssi::settings_add_bool('autospeak', 'speak_public_messages', 1);
|
||||
Irssi::settings_add_bool('autospeak', 'speak_all_public_messages', 0);
|
||||
Irssi::settings_add_bool('autospeak', 'speak_indirect_messages',0);
|
||||
Irssi::settings_add_bool('autospeak', 'speak_active_window', 0);
|
||||
Irssi::settings_add_bool('autospeak', 'speak_dcc_messages', 1);
|
||||
|
Loading…
Reference in New Issue
Block a user