Just for the completness, a variant that uses ffmpeg and aplay instead of ffplay. Both variants works fine on my RPi4 with a JBL BT speaker as well as on my Lenovo laptop running Debian using internal speakers
[
{
"id": "d4aabbddc6e7ae52",
"type": "trigger",
"z": "bf1b20db733dbc1c",
"name": "",
"op1": "This works perfect for me",
"op2": "",
"op1type": "str",
"op2type": "nul",
"duration": "250",
"extend": false,
"overrideDelay": false,
"units": "ms",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 300,
"y": 790,
"wires": [
[
"cd3b318c9a91def8",
"2e5cee9598bda8ef"
]
]
},
{
"id": "cd3b318c9a91def8",
"type": "trigger",
"z": "bf1b20db733dbc1c",
"name": "",
"op1": "Shouting out loud",
"op2": "",
"op1type": "str",
"op2type": "nul",
"duration": "250",
"extend": false,
"overrideDelay": false,
"units": "ms",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 300,
"y": 840,
"wires": [
[
"9aa2d23f4c44d37c",
"5aaacff5bd23d1c6"
]
]
},
{
"id": "b0ec47d1af194872",
"type": "trigger",
"z": "bf1b20db733dbc1c",
"name": "",
"op1": "Whispering something",
"op2": "",
"op1type": "str",
"op2type": "nul",
"duration": "250",
"extend": false,
"overrideDelay": false,
"units": "ms",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 300,
"y": 940,
"wires": [
[
"a5d7ad1337e6fe0f",
"8794c1417ac1ce63"
]
]
},
{
"id": "a5d7ad1337e6fe0f",
"type": "trigger",
"z": "bf1b20db733dbc1c",
"name": "",
"op1": "Yeah, I don't know how to make google talk Aussie. I shall have to check the accents. (Just there are a lot of them from which to choose)",
"op2": "",
"op1type": "str",
"op2type": "nul",
"duration": "250",
"extend": false,
"overrideDelay": false,
"units": "ms",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 300,
"y": 990,
"wires": [
[
"874794483c6bb6f2",
"57f41d5db45625a0"
]
]
},
{
"id": "382ccf406bbba79d",
"type": "inject",
"z": "bf1b20db733dbc1c",
"name": "",
"props": [
{
"p": "payload"
},
{
"p": "topic",
"vt": "str"
}
],
"repeat": "",
"crontab": "",
"once": false,
"onceDelay": 0.1,
"topic": "",
"payload": "true",
"payloadType": "bool",
"x": 130,
"y": 740,
"wires": [
[
"7148105b7475350d"
]
]
},
{
"id": "7148105b7475350d",
"type": "delay",
"z": "bf1b20db733dbc1c",
"name": "",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "5",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 300,
"y": 740,
"wires": [
[
"d4aabbddc6e7ae52"
]
]
},
{
"id": "8b4370ce030eb42c",
"type": "delay",
"z": "bf1b20db733dbc1c",
"name": "Queue",
"pauseType": "rate",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "hour",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 820,
"y": 790,
"wires": [
[
"b5b66dde6664f9d7"
]
]
},
{
"id": "52f3de084e06e73d",
"type": "function",
"z": "bf1b20db733dbc1c",
"name": "Flush",
"func": "return {flush: 1}",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 820,
"y": 860,
"wires": [
[
"8b4370ce030eb42c"
]
]
},
{
"id": "e9f6d6e02176127b",
"type": "switch",
"z": "bf1b20db733dbc1c",
"name": "",
"property": "filesArray",
"propertyType": "msg",
"rules": [
{
"t": "nnull"
}
],
"checkall": "true",
"repair": false,
"outputs": 1,
"x": 1130,
"y": 790,
"wires": [
[
"7204f0eec38cc9dc"
]
]
},
{
"id": "7204f0eec38cc9dc",
"type": "function",
"z": "bf1b20db733dbc1c",
"name": "function 11",
"func": "let mp = msg.filesArray[0].file;\nlet vol = msg.passThroughMessage.volume;\nmsg.payload = 'ffmpeg -i ' + mp + ' -hide_banner ' + '-af ' + vol + ' -f wav - | aplay';\nreturn msg;\n",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 1130,
"y": 860,
"wires": [
[
"2156ba89eef3c7c5"
]
]
},
{
"id": "2156ba89eef3c7c5",
"type": "exec",
"z": "bf1b20db733dbc1c",
"command": "",
"addpay": "payload",
"append": "",
"useSpawn": "false",
"timer": "",
"winHide": false,
"oldrc": false,
"name": "",
"x": 1130,
"y": 930,
"wires": [
[],
[],
[
"52f3de084e06e73d"
]
]
},
{
"id": "b5b66dde6664f9d7",
"type": "ttsultimate",
"z": "bf1b20db733dbc1c",
"name": "",
"voice": "en-AU",
"ssml": false,
"sonosipaddress": "192.168.1.109",
"sonosvolume": "30",
"sonoshailing": "0",
"config": "557d8082.eb5a8",
"property": "payload",
"propertyType": {},
"rules": [],
"playertype": "noplayer",
"speakingrate": "",
"speakingpitch": "",
"unmuteIfMuted": false,
"elevenlabsStability": "",
"elevenlabsSimilarity_boost": "",
"x": 970,
"y": 790,
"wires": [
[
"e9f6d6e02176127b"
],
[]
]
},
{
"id": "9aa2d23f4c44d37c",
"type": "trigger",
"z": "bf1b20db733dbc1c",
"name": "",
"op1": "A long message about nothing really, just demonstrating that I can talk about anything",
"op2": "",
"op1type": "str",
"op2type": "nul",
"duration": "250",
"extend": false,
"overrideDelay": false,
"units": "ms",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 300,
"y": 890,
"wires": [
[
"b0ec47d1af194872",
"c12e41d9d44b71fc"
]
]
},
{
"id": "2e5cee9598bda8ef",
"type": "change",
"z": "bf1b20db733dbc1c",
"name": "",
"rules": [
{
"t": "set",
"p": "volume",
"pt": "msg",
"to": "volume=0.3",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 540,
"y": 790,
"wires": [
[
"8b4370ce030eb42c"
]
]
},
{
"id": "5aaacff5bd23d1c6",
"type": "change",
"z": "bf1b20db733dbc1c",
"name": "",
"rules": [
{
"t": "set",
"p": "volume",
"pt": "msg",
"to": "volume=0.7",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 540,
"y": 840,
"wires": [
[
"8b4370ce030eb42c"
]
]
},
{
"id": "c12e41d9d44b71fc",
"type": "change",
"z": "bf1b20db733dbc1c",
"name": "",
"rules": [
{
"t": "set",
"p": "volume",
"pt": "msg",
"to": "volume=0.3",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 540,
"y": 890,
"wires": [
[
"8b4370ce030eb42c"
]
]
},
{
"id": "8794c1417ac1ce63",
"type": "change",
"z": "bf1b20db733dbc1c",
"name": "",
"rules": [
{
"t": "set",
"p": "volume",
"pt": "msg",
"to": "volume=0.1",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 540,
"y": 940,
"wires": [
[
"8b4370ce030eb42c"
]
]
},
{
"id": "874794483c6bb6f2",
"type": "change",
"z": "bf1b20db733dbc1c",
"name": "",
"rules": [
{
"t": "set",
"p": "volume",
"pt": "msg",
"to": "volume=0.3",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 540,
"y": 990,
"wires": [
[
"8b4370ce030eb42c"
]
]
},
{
"id": "57f41d5db45625a0",
"type": "trigger",
"z": "bf1b20db733dbc1c",
"name": "",
"op1": "I haven't fully tested ALL the messages - mostly notifications of fixed events - so should be short enough to fit in 5 seconds.",
"op2": "",
"op1type": "str",
"op2type": "nul",
"duration": "250",
"extend": false,
"overrideDelay": false,
"units": "ms",
"reset": "",
"bytopic": "all",
"topic": "topic",
"outputs": 1,
"x": 300,
"y": 1040,
"wires": [
[
"3aa592ae6d028079"
]
]
},
{
"id": "3aa592ae6d028079",
"type": "change",
"z": "bf1b20db733dbc1c",
"name": "",
"rules": [
{
"t": "set",
"p": "volume",
"pt": "msg",
"to": "volume=0.3",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 540,
"y": 1040,
"wires": [
[
"8b4370ce030eb42c"
]
]
},
{
"id": "557d8082.eb5a8",
"type": "ttsultimate-config",
"name": "googletranslate",
"noderedipaddress": "127.0.0.1",
"noderedport": "1980",
"purgediratrestart": "leave",
"ttsservice": "googletranslate",
"TTSRootFolderPath": ""
}
]