Read the statement by Michael Teeuw here.
Trouble playing audio file
-
@sdetweil Yeah, the monitor I use has speakers and I have tried to reproduce YouTube and even this mp3 o wav file without the Magic Mirror started and it works, but when I call some functions to execute the audio with the Magic Mirror it doesn’t work. I am generating this audio with gtts and I don’t know if the problem is because those two actions are executed at the same time:
const gTTS = require('gtts'); var play = require('play').Play(); var gtts = new gTTS('text to speak', 'es-es'); gtts.save('/tmp/hello.wav', function (err, result) { if(err) { throw new Error(err) } console.log('Success! Open file /tmp/hello.mp3 to hear result.'); }); play.sound('/tmp/hello.wav');
The code below is one of the many attempts I have tried :(
Thanks for the response! -
@mZuil can u run this piece of code from a terminal window?
put the code in xxx.js
then
node xxx.jsdoes it work?
-
@sdetweil Sorry, I couldn’t try it before.
It doesn’t work :( I am a beginner and I don’t understand well what is happening, could you help me, please? :crying_face: -
@mZuil what does the play() library say about sound output configuration?
https://github.com/Marak/play.js#readme
requirements:One of the CLI based audio player
CLI means Command Line Interface
I think you should have seen this error
console.log('No suitable audio player could be found - exiting.'.red);
-
@mZuil none of the players listed in his code and doc are installed on raspberry pi os by default.
-
@sdetweil the problem is not there…
The problem is you can’t play a file when it’s not fully created!2 solutions:
Make a promise
Or play the file when the file is created -
@bugsounet ah yes good catch. I jumped to play()…
move the play() inside the callback on save()
players will be the next problem
-
just because sometime i'm kind...
(my favorite sentence!)Try this:
const gTTS = require('gtts'); var player = require('play-sound')( opts = { player: "mpg123" // use only `mpg123` for playing sounds } ); var gtts = new gTTS('text to speak', 'es-es'); // main file player function playing (file) { player.play(file, (err) => { if (err) throw new Error(err) }); } gtts.save('/tmp/hello.wav', (err, result) => { if(err) { throw new Error(err) } console.log('Success! start playing result.'); // right ! sound file is created let's play it ! playing("/tmp/hello.wav"); });
Notes:
- You need to install
mpg123
app withsudo apt-get install mpg123
- I replace your
play
library byplay-sound
for better compatibility
Don’t forget to install this librarynpm install play-sound
- You can see manual of
play-sound
library there
- You need to install
-
Thanks to both of you!
I have just tried the code and it works in a js file, but when I try to replicate this code in the MMirror I get the error that opts is not defined. Where do I have to declare opts? -
I am writing this code in the node_helper file