Add a pause in Say action.

2,645 views
Skip to first unread message

Brad Minion

unread,
Mar 16, 2015, 6:49:12 PM3/16/15
to tas...@googlegroups.com
Is there a way to insert a pause in a Say string? Like "take a breath" then continue. I've tried commas, semi colons, colons nothing seems to work. If I put it in a separate Say command that's too much of a delay.

PC

unread,
Mar 16, 2015, 6:59:59 PM3/16/15
to tas...@googlegroups.com
That's weird.. I found that putting 2 'Say' actions one after the other made it say the whole phrase as if it was in one command... so I put a 250ms 'Wait' command in between the 2 and it's perfect.  Obviously you would have to customize the wait to your liking, but unfortunately, there doesn't seem to be a way to create a 'breath-like' pause in one 'Say' action.

Scott Miller

unread,
Mar 16, 2015, 7:03:40 PM3/16/15
to tas...@googlegroups.com

I think that might depend on the voice engine. I'm using Ivona, and a comma does insert a brief pause.

Scott M.

--
You received this message because you are subscribed to the Google Groups "Tasker" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tasker+un...@googlegroups.com.
Visit this group at http://groups.google.com/group/tasker.
For more options, visit https://groups.google.com/d/optout.

Jeremy Harris

unread,
Mar 16, 2015, 8:32:00 PM3/16/15
to tas...@googlegroups.com
2nd for Ivonna. There's pauses and, i think, inflection for punctuation.

Brad Minion

unread,
Mar 17, 2015, 9:05:56 AM3/17/15
to tas...@googlegroups.com
PC, to get the 2 separate Say commands to sound like one, do you have the "Continue Task Immediately" option checked? I don't.

On Mon, Mar 16, 2015 at 7:32 PM, Jeremy Harris <jharr...@gmail.com> wrote:
2nd for Ivonna. There's pauses and, i think, inflection for punctuation.

korni

unread,
Mar 17, 2015, 9:09:24 AM3/17/15
to tas...@googlegroups.com
I have found out that an exclamation mark does the job on default Google Voice. Try a few in a row to get longer pause maybe?

Brad Minion

unread,
Mar 17, 2015, 9:45:57 AM3/17/15
to tas...@googlegroups.com
Maybe it's a device thing? I tried exclamation marks in both the default and the Google text-to-speech engine. No pause on my Note 4.

--

Brad Minion

unread,
Mar 17, 2015, 10:09:18 AM3/17/15
to tas...@googlegroups.com
Ivona (eng-USA) does not pause for me either.

Adam W

unread,
Mar 17, 2015, 4:46:44 PM3/17/15
to tas...@googlegroups.com
I have a task that acts like a function. It is called {Speech}tSndTTS_Say(Text, [Config]). If the input String is longer than 500 chars it splits the string at periods. It then pops each array item until finished and calls the tts engine. I have thrown whole books at it and it works like a charm, and it has a nice little pause between each sentence. As an added bonus, since it splits at period and it is configured never to read the empty variable name, multiple periods in a row increases the length of the pause.

Jeremy Harris

unread,
Mar 17, 2015, 7:31:10 PM3/17/15
to tas...@googlegroups.com
I have a task that acts like a function

That sounds awesome! Sounds like mostly Java?

Rob Fisk

unread,
Feb 27, 2018, 5:39:57 PM2/27/18
to Tasker
I am using this via tasker. I would very much like there to be a built in syntax for TTS to be able to take half a second, or even a second before continuing the next peice of text. This should surely be there.

Pent

unread,
Mar 1, 2018, 5:50:27 AM3/1/18
to Tasker


I am using this via tasker. I would very much like there to be a built in syntax for TTS to be able to take half a second, or even a second before continuing the next peice of text. This should surely be there.

It depends on the speech engine. I would think any decent engine would insert a pause when it sees a , for instance, and
a longer one for full-stop.

Pent

Rob Fisk

unread,
Mar 1, 2018, 6:43:11 AM3/1/18
to tas...@googlegroups.com
Both the Google and Samsung engines do add breif pauses for commas and full stopps but you can't increase that time by increasing the number of them.

I was hoping someone knew of some trick I had been unable to find to add longer pauses or even specify by milliseconds.

Virus-free. www.avast.com

--
You received this message because you are subscribed to a topic in the Google Groups "Tasker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tasker/SfInbg0sx7k/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tasker+unsubscribe@googlegroups.com.
Visit this group at https://groups.google.com/group/tasker.

Jeremy Harris

unread,
Mar 1, 2018, 10:12:02 AM3/1/18
to tas...@googlegroups.com
Acapela allows you to adjust the "natural" pauses shorter or longer if you wish.  As well, the overall speed of the speech itself. 

Rob Fisk

unread,
Mar 1, 2018, 12:32:21 PM3/1/18
to tas...@googlegroups.com
I'm not sure how I would use that in the Tasker action Say.
You supply it with the text to say and the engine to use.
You can change the pitch and speed.

The natural pauses are fine as they are but I was hoping for the ability to specify a custom pause length where needed by some method.
For instance I found the question answered but for Apple TTS where [[slnc 5000]] is a 5 second pause.

John Doe

unread,
Mar 1, 2018, 1:11:32 PM3/1/18
to Tasker
Some TTS engines (not sure about the Google one) supports SSML, you can use that. As alternative you can use online services to generate an audio file.

I'm not sure how I would use that in the Tasker action Say.
You supply it with the text to say and the engine to use.
You can change the pitch and speed.

The natural pauses are fine as they are but I was hoping for the ability to specify a custom pause length where needed by some method.
For instance I found the question answered but for Apple TTS where [[slnc 5000]] is a 5 second pause.
On 1 March 2018 at 15:11, Jeremy Harris <jharr...@gmail.com> wrote:
Acapela allows you to adjust the "natural" pauses shorter or longer if you wish.  As well, the overall speed of the speech itself. 
On Mar 1, 2018 6:43 AM, "Rob Fisk" <rob....@gmail.com> wrote:
Both the Google and Samsung engines do add breif pauses for commas and full stopps but you can't increase that time by increasing the number of them.

I was hoping someone knew of some trick I had been unable to find to add longer pauses or even specify by milliseconds.

Virus-free. www.avast.com
On 1 March 2018 at 10:50, Pent <crafty...@gmail.com> wrote:


I am using this via tasker. I would very much like there to be a built in syntax for TTS to be able to take half a second, or even a second before continuing the next peice of text. This should surely be there.

It depends on the speech engine. I would think any decent engine would insert a pause when it sees a , for instance, and
a longer one for full-stop.

Pent

--
You received this message because you are subscribed to a topic in the Google Groups "Tasker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tasker/SfInbg0sx7k/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tasker+un...@googlegroups.com.

Visit this group at https://groups.google.com/group/tasker.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "Tasker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tasker/SfInbg0sx7k/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tasker+un...@googlegroups.com.

Visit this group at https://groups.google.com/group/tasker.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to a topic in the Google Groups "Tasker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tasker/SfInbg0sx7k/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tasker+un...@googlegroups.com.

Jeremy Harris

unread,
Mar 1, 2018, 5:37:19 PM3/1/18
to Tasker
At one time I needed a way to manually pause Say actions, by way of a pause button scene or on an incoming call event. I created a solution that worked for me, but it's quite complex. I can share it if you like, but im not sure it would work for you....it's intended to interrupt and resume very long Say "actions" (or in my case I parsed into smaller bits and looped them individually into the Say action).

Rob Fisk

unread,
Mar 1, 2018, 6:00:51 PM3/1/18
to tas...@googlegroups.com
I'm certainly willing to have a look as It will be somethign new to learn.

My use case is to be able to quickly edit text strings to play via Say in tasker.
I am thinking I could have text snippets as variables and various ways to join them, or a loop with pauses.

Even if your method does not help me here it is likely to be interesting and lodge search criteria in my head for help with other things.

Hopefully it will help others to come as well.

Go for it.

And thankyou for all your help so far.Much of it has been logged for when I start mucking about with the Pi again. I have delusions of making A Pi Zero controlled time traveler fancy dress costume with vopice controlled actions from a bluetooth wrist unit.

Cheers,

Rob.

On 1 March 2018 at 22:37, Jeremy Harris <jharr...@gmail.com> wrote:
At one time I needed a way to manually pause Say actions, by way of a pause button scene or on an incoming call event.  I created a solution that worked for me, but it's quite complex.  I can share it if you like, but im not sure it would work for you....it's intended to interrupt and resume very long Say "actions" (or in my case I parsed into smaller bits and looped them individually into the Say action).
--
You received this message because you are subscribed to a topic in the Google Groups "Tasker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tasker/SfInbg0sx7k/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tasker+unsubscribe@googlegroups.com.

techguyone

unread,
Mar 2, 2018, 7:30:25 AM3/2/18
to Tasker
How do you guys all use Ivana etc, my phone stopped supporting it with Android 7 plus the dev abandoned the app, I'm stuck with the basic Google TTS stuff now which is a bit crap really.
To unsubscribe from this group and all its topics, send an email to tasker+un...@googlegroups.com.

Jeremy Harris

unread,
Mar 3, 2018, 3:51:10 PM3/3/18
to Tasker
Sure, so here's the sub-task that actually performs the Say action and determines if it should proceed, pause, or resume:

SPEECH Task Pauser (101)
A1: Say [ Text:%par1 Engine:Voice:default:default Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off Continue Task After Error:On ]
A2: If [ %PACTIVE ~ *,In Call,* ]
A3: Wait Until [ MS:0 Seconds:1 Minutes:0 Hours:0 Days:0 ] If [ %PACTIVE !~ *,In Call,* ]
A4: Goto [ Type:Action Number Number:1 Label: ]
A5: Else If [ %PACTIVE ~ *,Pause Button,* ]
A6: Wait Until [ MS:0 Seconds:1 Minutes:0 Hours:0 Days:0 ] If [ %PACTIVE !~ *,Pause Button,* ]
A7: Goto [ Type:Action Number Number:1 Label: ]
A8: End If


I have a separate profile to detect if the phone is Off Hook, linked to a dummy task (one action that labels an anchor). If that profile becomes active, it will finish the Say action and Wait Until the profile becomes inactive....then it will repeat the last Say action and return to the parent to grab the next sentence.

Likewise, I have made a scene with a buy-in that toggles a global variable so I can manually pause. It does the same thing, except it will Wait Until the global variable toggles back to play.

And the parent task basically replaces all Say actions with a Perform Task [SPEECH Task Pauser].

Say Morning Call (39)
A1: [X] AutoVoice Continuous [ Configuration:
Stopping continuous voice recognition Timeout (Seconds):0 ]
A2: Media Volume [ Level:15 Display:Off Sound:Off ]
A3: HTTP Get [ Server:Port:http://www.mcall.com/news/breaking/ Path: Attributes: Cookies: User Agent: Timeout:10 Mime Type: Output File: Trust Any Certificate:Off ]
A4: Variable Set [ Name:%mcbreakingnews To:%HTTPD Recurse Variables:Off Do Maths:Off Append:Off ]
A5: Variable Split [ Name:%mcbreakingnews Splitter:class="trb_outfit_relatedListTitle_a"> Delete Base:Off ]
A6: Variable Set [ Name:%last To:%mcbreakingnews(#) Recurse Variables:Off Do Maths:Off Append:Off ]
A7: Array Pop [ Variable Array:%mcbreakingnews Position:%last To Var: ]
A8: Array Pop [ Variable Array:%mcbreakingnews Position:1 To Var: ]
A9: Say [ Text:Here are the latest news stories from the Morning Call. Engine:Voice:default:default Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ]
A10: Show Scene [ Name:Speech Pauser Display As:Overlay, Blocking Horizontal Position:184 Vertical Position:100 Animation:System Show Exit Button:Off Show Over Keyguard:On Continue Task Immediately:On ]
A11: If [ %par1 Set ]
A12: For [ Variable:%newsevent Items:%mcbreakingnews(1:8) ]
A13: Variable Search Replace [ Variable:%newsevent Search:class="trb_outfit_group_list_item_brief" Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In:%matched Replace Matches:Off Replace With: ]
A14: If [ %matched1 Set ]
A15: Variable Split [ Name:%newsevent Splitter:class="trb_outfit_group_list_item_brief" Delete Base:Off ]
A16: Variable Split [ Name:%newsevent1 Splitter:</a> Delete Base:Off ]
A17: Variable Set [ Name:%eventtitle To:%newsevent11 Recurse Variables:Off Do Maths:Off Append:Off ]
A18: Variable Split [ Name:%newsevent2 Splitter:</p Delete Base:Off ]
A19: Variable Split [ Name:%newsevent21 Splitter:> Delete Base:Off ]
A20: Variable Set [ Name:%eventstory To:%newsevent212 Recurse Variables:Off Do Maths:Off Append:Off ]
A21: Perform Task [ Name:SPEECH Task Pauser Priority:%priority + 1 Parameter 1 (%par1):%eventtitle. Here's the story. %eventstory. Parameter 2 (%par2): Return Value Variable: Stop:Off ]
A22: End If
A23: End For
A24: Else
A25: For [ Variable:%newsevent Items:%mcbreakingnews() ]
A26: Variable Search Replace [ Variable:%newsevent Search:class="trb_outfit_group_list_item_brief" Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In:%matched Replace Matches:Off Replace With: ]
A27: If [ %matched1 Set ]
A28: Variable Split [ Name:%newsevent Splitter:class="trb_outfit_group_list_item_brief" Delete Base:Off ]
A29: Variable Split [ Name:%newsevent1 Splitter:</a> Delete Base:Off ]
A30: Variable Set [ Name:%eventtitle To:%newsevent11 Recurse Variables:Off Do Maths:Off Append:Off ]
A31: Variable Split [ Name:%newsevent2 Splitter:</p Delete Base:Off ]
A32: Variable Split [ Name:%newsevent21 Splitter:> Delete Base:Off ]
A33: Variable Set [ Name:%eventstory To:%newsevent212 Recurse Variables:Off Do Maths:Off Append:Off ]
A34: Perform Task [ Name:SPEECH Task Pauser Priority:%priority + 1 Parameter 1 (%par1):%eventtitle. Here's the story. %eventstory. Parameter 2 (%par2): Return Value Variable: Stop:Off ]
A35: End If
A36: End For
A37: End If
A38: Destroy Scene [ Name:Speech Pauser ]
A39: [X] AutoVoice Continuous [ Configuration:
Starting continuous voice recognition without headset
Persistent Notification: true Timeout (Seconds):0 ] If [ %par1 !~ true ]

So, in the parent task, I'm parsing the data I want into an array, and looping through the elements (maybe a sentence in each element)...calling the sub task SPEECH Task Pauser at each iteration instead of a Say action. The sub task has to have a greater priority, so I set it to %priority+1 but IIRC Pent may have made that default....I made this several years ago.

Jeremy Harris

unread,
Mar 3, 2018, 3:52:58 PM3/3/18
to Tasker
Sorry....the pause button toggles a profile on/off.... not a global variable.... both approaches should work though.

Rob Fisk

unread,
Mar 3, 2018, 4:22:40 PM3/3/18
to tas...@googlegroups.com
That could work. I have created a parent element where I can swap between different Say actions. I f change the child actions to set a variable that the parent will parse and execute as separate Say actions with a pause between I could get there.
I do see a different approach I think but you have given me a place to start and a heads up on the syntax needed.

Many thanks

Rob.


On 3 March 2018 at 20:52, Jeremy Harris <jharr...@gmail.com> wrote:
Sorry....the pause button toggles a profile on/off.... not a global variable.... both approaches should work though.
Reply all
Reply to author
Forward
0 new messages