MP3 speech files for use in clock projects

In recent post I’ve posted about Using Text to Speech online tools to create audio files for Arduino projects and Batch processing files with Audacity. I have a couple of projects that use speech alerts and one of those is a speaking clock. It announces the time at the press of a button, but more helpfully announces the hour, when it is time to get up and when to have morning tea and lunch.

While I don’t think the Arduino code is in a fit state to share I’ve uploaded the audio files to Github for anyone to use in their projects. There are two versions of of the files:

  1. French Celine created with Online Tone Generator. These are the files I am currently using in my clock.
  2. British Amy created with TTSMP3. An alternative set I made to test TTSMP3

I use French Celine in my project. Here are a couple of examples of what they can do when joined:

French Celine

British Amy

I have uploaded the mp3 files to my Github for anyone to freely use. They are available here. This is a list of the files:

000 zero.mp3
001 one.mp3
002 two.mp3
003 three.mp3
004 four.mp3
005 five.mp3
006 six.mp3
007 seven.mp3
008 eight.mp3
009 nine.mp3
010 ten.mp3
011 eleven.mp3
012 twelve.mp3
013 thirteen.mp3
014 fourteen.mp3
015 fifteen.mp3
016 sixteen.mp3
017 seventeen.mp3
018 eighteen.mp3
019 nineteen.mp3
020 twenty.mp3
021 twenty one.mp3
022 twenty two.mp3
023 twenty three.mp3
024 twenty four.mp3
025 twenty five.mp3
026 twenty six.mp3
027 twenty seven.mp3
028 twenty eight.mp3
029 twenty nine.mp3
030 thirty.mp3
031 thirty one.mp3
032 thirty two.mp3
033 thirty three.mp3
034 thirty four.mp3
035 thirty five.mp3
036 thirty six.mp3
037 thirty seven.mp3
038 thirty eight.mp3
039 thirty nine.mp3
040 forty.mp3
041 forty one.mp3
042 forty two.mp3
043 forty three.mp3
044 forty four.mp3
045 forty five.mp3
046 forty six.mp3
047 forty seven.mp3
048 forty eight.mp3
049 forty nine.mp3
050 fifty.mp3
051 fifty one.mp3
052 fifty two.mp3
053 fifty three.mp3
054 fifty four.mp3
055 fifty five.mp3
056 fifty six.mp3
057 fifty seven.mp3
058 fifty eight.mp3
059 fifty nine.mp3
060 sixty.mp3
061 one oclock.mp3
062 two oclock.mp3
063 three oclock.mp3
064 four oclock.mp3
065 five oclock.mp3
066 six oclock.mp3
067 seven oclock.mp3
068 eight oclock.mp3
069 nine oclock.mp3
070 ten oclock.mp3
071 eleven oclock.mp3
072 twelve oclock.mp3
073 noon.mp3
074 twelve noon.mp3
075 midnight.mp3
076 the time is.mp3
077 it is.mp3
078 it is time to wake up.mp3
079 it is morning tea time.mp3
080 it is lunch time.mp3
081 am.mp3
082 pm.mp3
083 I was sleeping.mp3
084 good morning.mp3
085 good day.mp3
086 good afternoon.mp3
087 good evening.mp3
088 at the third stoke.mp3
089 beep beep beep.mp3
090 exactly.mp3
092 its time to do something.mp3
094 or there abouts.mp3
095 precisely.mp3

9 thoughts on “MP3 speech files for use in clock projects

Add yours

  1. A problem I have been trying to solve for a number of years. There was a time when MAC had a program that would play an MP3 file on the hour, or quarter hour or any combination. It also had the programability to make it play a random MP3. So, you could essentially have a folder of random MP3 and every 15 minutes the computer would play a random sound. I loved it. It was hysterical. The programmer has stopped updates. Looking at your blog and your knowledge, you might have suggestions for me to build a box that would do the exact same thing. Am I correct? Any suggestions?

    Like

    1. Hi. Although I’ve had several iPads I’ve never had a mac, but I remember reading back in the 90’s that macs quacked every now and then. I presume this is the same thing. It shouldn’t be too difficult to design and build something that does that with an Arduino module, for example a Nano and one of these MP3 modules. If you are not concerned about it making the sound at defined times, for example on the hour then it would be simpler as a Real Time Clock module would not be required. You could have it play a random sound at either every 15 minutes or so or at random times. I would look at setting the next play time using millis timer and then play the track and then set the next play time.

      If you want it to play on the hour and set intervals between the hour then you are only a step away from building a clock. It’s just missing a display.

      Like

      1. Thanks for responding!! Okay, so if I were to purchase and Arduino Nano… that would be a start. I really want to do this and would love to play around, but nothing is more frustrating to me than starting a new hobby and finding out I didnt reallllllly get what I needed. So, Arduino Nano. Then I assume I can get into the terminal… and I would wager there is coding somewhere for what I want.. or at least basis for it. I could set it to play a random wav file from a drive of thousands of files and.. I could set it to play at specific intervals.. ( it also helps me track time passing ) and … lol.. yes.. macs could quack. They ‘had” about seven basic sounds you could set as notifications. The app I am referring to was basically a “cuckoo clock” from a programmer that allowed you to choose the sound and how often it repeated. I really miss my computer randomly spitting out phrases…

        Like

      2. Ideally it sounds like software for your computer to do this would be the best option. However, Arduino is an alternative way. If I understand correctly, you have not used Arduino before so I’ll provide a bit more info about that. Sorry if you already know this. Arduino consists of programming software and standalone hardware. The hardware is based around cheap microcontrollers that are supplied on a development board that have additional support parts to get them up and running fairly easily. Included on many boards including the Nano is a USB socket to allow it all to be easily programmed by a Mac, Windows or Linux computer.

        They were designed to make it easier to program to allow more people to make things. Many people that have done programming before are surprised at how quickly they can get going with it. I expect anyone that has never programmed before to find it a bit more challenging but still doable.

        The Arduino Nano doesn’t have a built-in clock, but it does have a timer that begins counting up as soon as it is powered. The timer counts in milliseconds and while it is useful for many things it is not as accurate as a clock. I’ve pasted in a simple program below for the Nano that uses the timer to play a random track every set number of minutes. The code may give you an idea if this is the sort of thing you want to take on or not.

        
        // ==================================================================
        //   Demo sketch for Random track player using MP3 DFPlayer module
        // ==================================================================
        /*
           Connections
           ===========
           DFPlayer ground pin 7 and/or 10
           DFPlayer power pin 1 to 3.3 - 5V VCC
           Arduino TX (pin 9) - DFPlayer RX (pin 2) via 1k resistor
        
           DFplayer Output
           --------------
           Speaker to pin 6 (speaker +) and 8 (Speaker -)
           OR
           Audio output right channel - pin 4
           Audio output left channel - pin 5
        
           Audio files
           ===========
           This demo requires files with filenames starting with a 3 digit number starting with 001 
           and placed in a folder named 01 on the SD card 
        
           Delays
           ======
           The 2000 ms delays in this sketch are this length for my slowest player. Try reducing or removing for other players
        */
        
        #include  // Library for cummunication with DFPlayer
        
        // DFPlayer audio module connections
        #define mp3RxPin 10         // Pin for receiving commands from the DFPlayer - Not used or connected in this sketch
        #define mp3TxPin 9          // Pin for sending commands to the player (Player pin 2)
        
        // Set these for your preference
        long delayTime = 2;         // Number of minutes between plays
        int numberOfTracks = 72;    // Update this to store the number of tracks on the SD card
        int playerVolume = 10;      // Set player volume: 0 - 30
        int equalizerSetting = 0;   // Player equalizer: Normal = 0 / Pop = 1 / Rock = 2 / Jazz = 3 / Classic = 4 / Bass = 5
        
        // These are used and updated by the sketch
        long thisTrackNumber;       // For storing the track that is to be played
        long lastTrackTime = 0;     // For keeping track of when the last time a track was played
        long nextTrackTime = 0;     // For storing the time the next track is due to play
        long thisTrackTime = 0;     // For storing when the current track played
        
        // Set up software serial instead of serial to allow serial monitor to be used
        SoftwareSerial mp3(mp3RxPin, mp3TxPin);
        
        // --------------------- SETUP ---------------------
        void setup() {
        
          // Use random noise values from the unconnected A0 pin to seed the random number generator
          randomSeed(analogRead(0));
        
          // For comms to MP3 player
          mp3.begin(9600);
        
          // Wait for player to initialize
          delay(2000);
        
          // Set volume
          sendCommand(0x06, 0, playerVolume);
          delay(2000);
        
          // Set equalizer  
          sendCommand(0x07, 0, equalizerSetting);
          delay(2000);
        }
        
        // --------------------- MAIN LOOP ---------------------
        void loop() {
          // This loops around continuously while the Arduino is on
          
          // Check if enough time has elapsed to play a track
          if (millis() > nextTrackTime) {
        
            // Remember the time this track played
            thisTrackTime = nextTrackTime;
            
            // Select a random track and play it
            thisTrackNumber = 1 + random(numberOfTracks); // Choose track
            sendCommand(0x0F, 1, thisTrackNumber); // Play the track
            
            // Update the time to play the next track
            // The millis counter uses milliseconds. Multiply by 60 000 to get minutes
            nextTrackTime = thisTrackTime + (60000 * delayTime);
            
            // Remember when the last time a track was played
            lastTrackTime = thisTrackTime;
          }
        }
        
        // --------------------- SEND COMMANDS TO DFPLAYER ---------------------
        void sendCommand(byte Command, byte Param1, byte Param2) {
          // Format command including checksum and send to DFPlayer 
        
          // For DFPlayer communication
          const byte startByte = 0x7E;    // Start Command
          const byte versionByte = 0xFF;  // Version info
          const byte dataLength = 0x06;   // Fixed 0x06 Data length not including parity
          const byte infoReq = 0x00;      // Get info back from module - 0x00 = no info, 0x01 = return info
          const bool isDebug = false;     // Debug mode - Off in this sketch
          const byte endByte = 0xEF;      // Fixed end Command
        
          // Calculate the checksum
          unsigned int checkSum = -(versionByte + dataLength + Command + infoReq + Param1 + Param2);
        
          // Construct the command line
          byte commandBuffer[10] = { startByte, versionByte, dataLength, Command, infoReq, Param1, Param2,
              highByte(checkSum), lowByte(checkSum), endByte };
        
          // Send to player
          for (int cnt = 0; cnt < 10; cnt++) {
            mp3.write(commandBuffer[cnt]);
          }
        
          // Delay needed between successive commands
          delay(30);
        }
        

        I've added in lots of comments to provide info about each bit. In this example delayTime and numberOfTracks need to be changed to the number of minutes between each play and the total number of tracks in the SD card folder.

        Tracks need to be placed on a Micro SD card in a folder and each track needs to start with a 3 digit number starting with 001. The rest of the filename is not important. The DFPlayer just looks at the first three digits.

        This creates a standalone project. If you are still interested, I recommend having a look more at Arduino. I usually buy parts from eBay and I expect the Nano and DFPlayer would cost around US$10 - $15 for the two. A good speaker can cost more but you may already have one of those.

        Like

      3. WOW.. thank you for all the information. Very helpful and I had no idea I would get this much help via a blog. I will check it out. It would be nice to have software for my computer, but the arduino would make it much more portable than a desktop lol. Okay, now Ive got some steps to take. Thanks again.. Ill keep you apprised.

        Like

      4. Im pulling the trigger on this lol.. I have no idea how the two parts meld together.. but.. I trust they will. Excited to learn a new craft…

        NEW – Arduino Nano V3.0 ATMEGA328P CH340 16Mhz ** NEW with USB-C port !! **
        New

        DFplayer Mini MP3 DF Player Module Module Music Audio SHI O8F8 J9K Voice V9B1
        New

        Like

      5. Good luck with the project. I’ve not used the version of the Nano with a USB connection but I don’t expect you should have any issues with it and I expect you already have a cable to fit it whereas the mini USB cables are not very common any more.

        Other than the DFplayer module and a speaker, you will also need a micro USB card to store files and a 1K resistor. The resistor is for the data control line between the Nano and the DFPplayer and its purpose is to reduce the current and prevent noise from the Nano coming through to the speaker. As well as a resistance value, resistors also have a maximum current rating. The smallest is usually .25W which is fine. A 1K .25W resistors are usually sold in lots of at least 25 for about $2.

        The wiring will be similar to this tutorial https://forum.arduino.cc/t/dfplayer-mini-not-working-with-arduino-nano/508293/10 except for:
        – The wire between the Nano D10 and the DFPlayer (green wire) is not needed.
        – The yellow wire (TX) should be connected to D9 on the Nano instead of D11 to use the demo code I supplied.

        Like

      6. So, nano was delivered.. the player wont appear till mid oct. ( supply chain?) Nano mentions a static warning.. and dear lord, its been a life time since I’ve soldered. I need to get a gun to do it. lol.. starting to feel a bit in over my head and yet.. it looks pretty simple. How static sensitive is this thing?

        Like

      7. Good to hear the Nano has arrived. From what I can find online I don’t think Nanos are particularly prone to static as they have inbuilt diodes to protect against that, but I always avoid touching the pins too much. Most get destroyed in other ways such as trying to use the output pins to drive a large load, or in my case I’ve had them connected up on my desk and a metal object has slid underneath shorting out pins.

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Website Powered by WordPress.com.

Up ↑

%d bloggers like this: