SmartThings Community

BigTalker 2.0 -- Development

BigTalker Documentation: http://thingsthataresmart.wiki/index.php?title=BigTalker


Continuing from the following (since I can’t edit the main post there anymore. Time limits and all…)
https://community.smartthings.com/t/release-1-1-6-5-25-16-big-talker-talk-when-events-occur?source_topic_id=55305

Are you still interested in BigTalker with RuleMachine (now-defunct) and CoRE available (both of which also could perform text-to-speech operations)?
Given BigTalker’s current state, what changes would be most beneficial to you?

Unlimited event response rather than 3 event groups per device type (switch group 1, switch group 2, etc, motion group 1, motion group 2, etc…)
Unlimited scheduled specific times rather than 3?
Choice of musicPlayer vs. speechDevice handlers per event?
Ability to resume a musicPlayer device or not per event?
Others?

Let’s discuss 2.0…

6 Likes

I’m all for choices and Big Talker is definitely a lot easier to use than Core. I still use RM and I’ve used it for specific use cases but for general all purpose sounds and feedback, I prefer Big Talker. With your proposed changes for version 2, I would use it even more. I think I’ve mentioned this before but one of my wish list features is to have randomized speech and sounds for feedback. This way, we don’t always hear the exact same response each time something occurs.

Additionally, taking a cue from another excellent app, Ask Alexa, to be able to set options for different ‘moods’ such as Snarky for responses would be fun.

@rayzurbock BigTalker is my favourite app…so pleased you are developing it further! I have so many triggers configured you can rest assured that my wishlist below is derived from some extensive usage. Note sure how easy some of these are to achieve but nevertheless… Keep up the good work…

I’d be interested to learn which one you think are possible, difficult or already on your functionality hit list :wink:

  • Unlimited Event configuration per device
  • ability to store a range of TTS messages per event allowing BT to randomly select different TTS messages per device in order to make the notification experience different each time and make it feel that the house has a personality :slight_smile:
  • Back up and restore … I’ve been using BT since only version 1.1.6 so have never upgraded but with the extensive range of triggers i have configured I am petrified of a crash or corruption resulting in me having to reconfigure all the events/triggers… ability to save the config elsewhere as backup ?
  • Some sort of system check/error log in the app - occasionally BT doesn’t trigger as i am sure this is the ST platform but never entirely sure
  • Tannoy function - expand the ‘Talk now’ function to set a preconfigured range of repeatable announcements e.g. ‘Kids dinner is ready’ to save retyping/changing the previous message (noted that V1.1.6 states it needs to be different from the last spoken phrase so this might be difficult)
  • I want to get rid of Sonos Notify with Sound … so including big talk to play a music flle would be great … even playing the music file after a TTS announcement would be ideal (minimal delay)
  • Queuing, if multiple TTS messages are targeted at the same speaker and they fire at the same time e.g. two doors open then the message to be queued behind one another
  • Minimum time between actions - ability to set a minimum time between events
  • Ability to delete slots - say slot 2 and the other configs in slot 3, move to fill slot 2 automatically without having to individually delete each config
  • Ability to Test play each message after config
  • Ability to change/set the volume per event rather than setting globally as a default
  • Ability to resume playing music accurately after a message is fired - when i say accurately …resume from point of when TTS message kicked in (or restart the last playing song/album)

once again, keep up the good work , its apps like this that keep my interest in Smartthings

Thanks

4 Likes

Some great suggestions Luigidon!

  • Ability to add a chime prior to each message would be good (or designate to play a chime prior to a specific message ie: door opening or window opening etc)

  • Ability to choose the voice used for TTS > currently the “Garage is open” voice is different to the other voices (or fix this bug?)

Thanks again for your hard work! :slight_smile:

1 Like

Lot’s of good feedback here. Some possible, some maybe, some not.
BTW, I welcome any ST developer to review the code structure and with that in mind build commented functions or assist in building commented functions for desired features.

I’m investigating moving away from the 3 groups per device type (switch, contact, motion, etc) and move to a parent/child app which could open this door.

This may take some thought and deep planning. I’ve had a few ask about adding personality.

I’ll look into this. I’ve not had SmartThings lose the state of my BigTalker installation, but given history with other apps it’s a real possibility. That said moving from 1.1.6 to 1.1.7 shouldn’t lose your triggers. That is a minor move programatically. Check the bottom of this page for the changes from 1.1.6 to 1.1.7.

It’s not in-app, but logging does exist in the IDE (https://graph.api.smartthings.com/ide/logs). If you desire more than you see, you can enable debug logging within the SmartThings BigTalker app at the bottom of the “Configure Defaults” page. I believe I might be able to show some of the things that I show in the IDE logs in-app. I’ll investigate bringing important logs in-app.

I could see adding some user customized tokens/variables that you could call up in Talk Now as well as within event triggers.

I’ve had adding playing an online mp3 as part of BigTalker at the back of my mind for a while. It’s still there, not a top priority, but a possibility.

I have actually had a function in the code for a while now to remind me to build a queue system. I’ve not done it because I think the queue could get pretty backed up and things could get weird while it flushes the queue. I’ll revisit.

This might help with my queue concern; although it could cause events to not occur that users are expecting and then they think BT is broken. ST docs discourage timers less than 60 seconds, so that could be a really long time and a lot of missed events for some.

I think the unlimited event config via parent/child app design should really help with this.

That’s really what I built Talk Now for; however I do not see why I couldn’t use the Talk Now function within the config pages so that you can test your phrase while configuring if desired. I’ll look into it.

Good idea.

BigTalker doesn’t have much control over this. If someone knows how I could do this, let me know. BigTalker calls the musicPlayer’s playTextAndResume() function. This is a function in the SmartThings device type handler for the device you are using. All I can do is call the function and hope that the device type handler does what it is supposed to do to stop what’s playing, record the track info, play the speech, restore the track info and resume playing. Device Type Handlers have been a thorn in my side in regards to music resuming since the inception of BigTalker. Just when I think it’s working someone else chimes in that it’s not or not consistently for them. I’ve fought this battle for a while and I’m not sure I can do anything else within BT to make it more consistent. I do plan to add a resume toggle switch per event so that resume can be enabled/disabled per event trigger at the users will.

I’ve had some requests to play a beep tone or something prior to playing a message.
This is problematic. BigTalker supports both speechSynthesis device handlers and musicPlayer device handlers. The speechSynthesis device handlers can typically only receive text where they convert that to audible speech. Sending a pre/post tone to these would be impossible. The musicPlayer device handlers could likely do this; however I am afraid it would likely break the ability to resume music playing on the device (ie: Mozart playing > BT requests the musicPlayer play the beep tone > BT then requests the musicPlayer plays the speech file for your phrase > The musicPlayer receives the request to resume play, but there have now been 2 other sounds played since Mozart was playing; likely the beep sound is what gets resumed). I’m not sure this is implementable in a clean non-hack manner.

I am going to assume that you are using BigTalker in musicPlayer mode with a Sonos or some other musicPlayer device. The issue you are experiencing is due to SmartThings caching the audio responses. When SmartThings recieves a text-to-speech (TTS) request for a new phrase, it processes it and outputs an audio file. That file is then cached and used for future calls of that same phrase. A while back SmartThings used a different TTS service on the backend then their traffic load outgrew the service and they switched. The two services used different voices. SmartThings did not delete the cache that contained the old voices. I’ve asked them to here in the forums, their response had hope, but it apparently hasn’t been done. Without hosting and calling out to my own TTS service (which could be large in cost personally to me) I have not control over the voice used. speechSynthesis voices are configured within the device itself. For example LanNouncer uses the configured Android TTS voice, so to change it you could download a TTS voice and then select it on the Android device.

4 Likes

@rayzurbock thanks buddy for your comprehensive reply, understand everything you say. I work in IT (not in the programming side unfortunately otherwise i would look to help at that level) but I wish my developers at work were so responsive and clear over requirements !!! but then again my work requirements are probably a lot more boring !!!

Really pleased that most of what we’ve suggested is doable as i really see this app as the cherry on the cake for home automation and smartthings should really exploit its capability if only at a marketing level, if i could showcase some of the crazy automations i have put into place then i am sure its a selling point for smartthings as all my friends and kids are both amused and amazed - and it all really hinges on your app.

ok,just a few clarification just to keep the momentum going as getting excited now for V2.0 - appreciate your got full time jobs… so take it easy

  • re: tannoy … idea was to allow say four (or more) entries of speech that you populate once each for a different occasion e.g.dinner time … bedtime (not that i am looking for my speakers to say goodnight to my kids …lol) and that when you wanted to ‘talk now’ you just hit a button to play the speech as opposed to write up using variable/token each time - noted that from what you say in the app these need to be different from the last to make it work which may be the issue

  • Debug/logging … might be me not fulling understanding the debug logs … i will examine them harder if i get any failure but i must say - been quite reliable and my main indictor is the hub light with the ST platform which is not the aps fault !

  • re: queuing - for announcements triggered relatively quickly after another - and for me - some of those announcements are long i think the queuing would alleviate message being cut of mid stream but understand the perspective of things sounding weird but that is really down the user programming the app i think… half the fun is getting the config right - timing ‘n’ all

understand about the resume music function, in fact i find that BT does the resume quite well yet other apps like Sonos notify and the smartthings SHM dont do it as well… just making sure that as you add functionality the resilience here is maintained as you build out the complexity because this is an important ‘user experience’ factor… where i still use voice notifications in say sonos notify and SHM - like this morning - leaving a door open for a period of time makes an announcement but the radio doesnt resume - appreciate its hit and miss and due to the same device handlers that you use but as i say i want to get rid of all other announcement apps as yours is the best - oh… there is another requirement for BT … replicate the SHM capability to announce after monitoring a lock or contact for it being unsecure or open - married with variation in announcements :grin:

thats it ---- will upgrade to 1.1.7

Oh, i have noticed that if i put a ‘?’ after some TTS message that the pronunciation is altered somewhat - is this something you’ve programmed or is part of the TTS platform ? as i cant seem to find any guides that describe range of possible variations to the voice output - i may have found the only one.

Keep up the good work

This depends on the TTS engine being used to convert the written text to audible sound. Most TTS engines worth anything will vary the audible output some based on punctuation dot, period, questionmark, exclamation mark. Even better ones will read symbols and convert them to language such as a degree mark in the temp. BigTalker has some text conversion that it does before sending data to the backend TTS engine to try to smooth out some phrases such as in a weather report it converts NNW to “North Northwest”.

I see that it’s a challenge but music resume is a big one for me.(I’m using Sonos) Number one reason I’m not currently using BT or any speech notifications for that matter.

I’d love the ability to randomize the message as someone said earlier. Would make things feel more natural.

Ugh… I’m stuck.

I’ve been trying to get past a parent/child app install issue. This has kept me from further development. I tried following @ady624 's lead on combining a parent/child app in one app for simple user install and management, but I kept getting an error on the final install page "Sorry, but there was an unexpected error.. I then split it out into separate parent/child apps and I’m still getting the same error on the final install page when I press Done. I see everything I expect to see in the logs, but absolutely nothing about the error that prevents it from actually installing "Sorry, but there was an unexpected error.. I have no leads on anything else to check/fix, just a generic error. Booo.

Make sure you are not trying to store any event or device into state. It would cause an error like that.

1 Like

Thanks. After much tinkering around, I am back in business. I’ve been stalled from this issue for quite some time. I’m making progress now… Thanks for your advise @ady624 !!!

2 Likes

Maybe you could have a no music flag for those of us that just use this to announce things, where if no music is set, it gives the option to play a Chime, say “alert, alert” or what ever, so we make a conscious effort to listen for the message. Or maybe even a flag to play messages twice, in a busy, noisy house, I find myself more often than not wondering what the heck did that thing just say.

Is 2.0 still in the works or out and I’m not finding it?
I’m currently using BigTalker with Smasung WiFi speakers and run a second copy of the app with Lannouncer and Echo Dots via Bluetooth.

I also run a 3 copy of BigTalker to send Smoke, CO2, and leak alerts to the WiFi speakers. I run this copy so the volume can be set much louder then other alerts.

Music plays in the house through the WiFi speakers most of the day. I like to have general announcements such as arrivals/departures, doors opening or left open etc. come through at the same volume as the music playing.

As a feature request, would it be possible to add the ability to set the volume per device group.
Having the ability to set a default volume is great but it would be nice to be able to set a higher level for alerts such as smoke, CO2, and leaks.

1 Like

Sweet so I seem to have had a good week of successful app installs. 3 that I’m working with are askalexa, echosistant and I just finished with big talker. I do need some help as everything works fine I just don’t know to much of its capabilities. Am I correct in saying you can input your own special commands like chimes and alarms and weather. Where is this done at? Is it copy and paste? What I’d like is to configure an event triggered by motion in the morning to give me a local weather report. Is this possible with bigtalker? When looking at some how to use instructions it seems like there’s a lot of copy paste commands or variables. Not sure where or how to use these. Anyways if I can get a little help I’m sure I can fiddle around and learn more of big talkers capabilities.

Check the first post in this thread. It shows all the options that you can use with BigTalker.

I for one would love the best of both worlds.

  1. Speech synthesizer for announcements, from switches etc.
  2. Music playing in the same app

I use this to mostly play announcements, but I do like my music.

  1. More slots to set up switches, 3 isn’t enough for me, but for others three is enough.

So far I am impressed, and looking forward to continue testing the Beta.

1 Like

Another example would be to create a virtual switch that is turned ON in the morning by your Good Movariables at rtine, and then OFF at night with your Good Night routine. Then set up a Big Talker Switch Event tied to that switch’s ON event that speaks “Good Morning. %weathercurrent%
%weathertoday%”

This would be what I would want to do. I’m just not sure how to do this. It says I can put in the variables at runtime? How? Where?. Specifically the %weathercurrent% and such others. I don’t see where I modify these variables. I’m getting close and I’m reading everything I can to figure it out. I’m kinda slow in the brain today though

Once you have BigTalker installed, Go into it from the SmartThings mobile app > Automation > SmartApps > Then Big Talker (or Big Talker-DEV if your trying the latest development version). Once you are in BigTalker go to the Configure Events page then for example Switch. Tap on the Switche(es) section under Group 1 (or 2 or 3) and select all of the switches that you want to speak the Group 1 (or 2 or 3) phrases, then press Done. Now in the field “Say this when switch is turned ON”, change the text to your desired phrase, this is where you type what you want spoken and in this location is where you would also type the token/variables as you want them in the phrase. The token/variables in your phrase, for example %currentweather%, are replaced with the desired text when the switch event occurs.

For example if you want Switch Group 1 to always say "Greetings, " followed by what the current weather is when a switch is turned on, you would type Greetings, %weathercurrent% in this field. %weathercurrent% will be replaced with the current weather when the switch event occurs.

There is a list of available tokens/variables if you scroll all the way to the bottom of the event group that you are configuring (switches, motions, etc) to the Help section and press on Phrase Tokens. These are for reference as to what you can type into the desired phrase that you want spoken.

I hope this helps.

1 Like

I’m still working on the 1.9, 1.10 version.
2.0 will likely be a parent/child app and will require some major surgery to get it as needed for that with cleaner code.
Many of the changes being incorporated into 1.9/1.10 (Such as triggering on Smart Home Monitor status change, etc) will flow into 2.0.

Thanks for the suggestions. I hope that with 2.0, I can eliminate the need for users to install multiple instances and allow unlimited event groups. Volume per event group seems like a good idea as well, thanks for the request.

I think that’s exactly the information I needed. I will try that later but now it makes sense. Thanks for your prompt reply. My Saturday ST puzzle shall be completed. What’s next.