Thread: Compression/Decompression Wave File and MP3

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Apr 2006
    Posts
    28

    Compression/Decompression Wave File and MP3

    Hello, everybody. Sorry to disturb you all.

    Currently, I have a speech recording and playback software developed by Microsoft Visual C++ 6.0. The software is used to train children with speech problem and scores will be calculated and showed at the end of each practice session. The software is able to record and playback real-time.

    Children use this software at home and save their practice records in a single floppy disk. Then, children will bring the floppy disk with practice records inside when they return to our centre. There are 20 wave files that must be saved in a single floppy disk. Due to space insifficiency, one floppy disk is 1.44M in capacity.
    Total size of 20 wave files = 20*188k = 3,760,000 bytes
    Total floppy disk needed = (3,760,000)/1,440,000 = 2.6 floppy disks
    But, I must save all the 20 wave files into a single floppy disk

    Our problem is we are not able to save all 20 wave files in a single floppy disk. We cant afford a CD-RW for each child and we must use floppy disk. The solution is we have to compress the wave file to save the files in a floppy and decompress the files back to wave file in order to listen to how the children practice at home.

    I am totally new to this as the software is written by one of my previous friend who worked together with me in a voluntary speech rehabilitation centre. We need this software to train children in the centre. I work part time there.

    But, my problem is how to call any CODEC dll into correct place into my current project platform without causing any bugs? Please forgive me if I have asked a very silly question, I am sorry. After I have added the cpp and h files into my current project paltform, I dont know what should I do next.

    My final destination is to save all 20 wave files in a single floppy disk. I didnt restrict that I must use compression/decompression methods but I dont know what else should I use.

    Hope you can give me some guidances on how to do it or you please link me to pages that help me to do so. I promise I can learn as independent as possible but I really need your guidance at this very beginning, please.

    Please, I really appreciate all your help.

  2. #2
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,666
    Convert your wavs to mp3, which is a much more compact audio format.
    http://www.google.com/search?q=wav+to+mp3

    Or maybe this
    http://technology.niagarac.on.ca/cou...ileFormat.html
    Use this to drop the bit rate, number of audio channels or whatever else you can get rid of to reduce the file size.
    Speech doesn't need stereo, and it doesn't need a particularly high bit rate either.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #3
    Hardware Engineer
    Join Date
    Sep 2001
    Posts
    1,398
    Maybe you should post a question on the Windows forum. I've tried to find out how to "talk to" a CODEC, and I never found a complete reference. But, I did find some sample code in an SDK... I think it was the DirectX SDK.

    Clearly, there is a standardized Windows-CODEC interface, because most audio programs that can query a CODEC's capabilities.

    I just found this at MSDN.

    There is a ton of documentation in the SDKs, and on MSDN... if you can wade through it and find what you're looking for. You might try downloading the Platform SDK, the Media Format SDK, and the DirectX SDK. The description of the Windows Media SDK seems to imply that it covers only the Windows Media Format (WMA and WMV), but I wonder if you use other CODECs in the same way.

    I am totally new to this as the software is written by one of my previous friend...
    Are you a programmer? If you have never programmed before, you will need some help. (This stuff is not for beginners, and most experienced programmers would have to do some research.) You will also need the program's source code (the C or CPP files) you cannot edit the execuatable (EXE) files.
    Last edited by DougDbug; 04-20-2006 at 05:45 PM.

  4. #4
    Registered User
    Join Date
    Apr 2006
    Posts
    28
    Quote Originally Posted by DougDbug
    Maybe you should post a question on the Windows forum. I've tried to find out how to "talk to" a CODEC, and I never found a complete reference. But, I did find some sample code in an SDK... I think it was the DirectX SDK.

    Clearly, there is a standardized Windows-CODEC interface, because most audio programs that can query a CODEC's capabilities.

    I just found this at MSDN.

    There is a ton of documentation in the SDKs, and on MSDN... if you can wade through it and find what you're looking for. You might try downloading the Platform SDK, the Media Format SDK, and the DirectX SDK. The description of the Windows Media SDK seems to imply that it covers only the Windows Media Format (WMA and WMV), but I wonder if you use other CODECs in the same way.


    Are you a programmer? If you have never programmed before, you will need some help. (This stuff is not for beginners, and most experienced programmers would have to do some research.) You will also need the program's source code (the C or CPP files) you cannot edit the execuatable (EXE) files.
    Hi, DougDbug, thanks a lot for replying my post, thanks.
    For your information, I am quite new to programming, but I have learnt the program codes done my friends before, so I think I understand the program flows so far. (if I am not mistake)

    I am so afraid, you mean so far nobody could manage to 'talk' to a codec?

    When you said "Platform SDK, the Media Format SDK, and the DirectX SDK", do you mean I have to use three of them or only one of them? Could you please explain?

    Regarding your last paragraph, I have found several complete source codes from many websites including zip/unzipp and codec, but I just dont know how to call the CODEC dll from my software. I couldnt find a tutorial or details on that.

    Can you please link me to the pages that can guide me? Or if you know how to call with source codes available, can you please teach me? I could attach them here anytime if you want. I promise I will learn as independent as possible, I wont disturb you much, please. I really need some guidance and helps at this beginning stage, please

  5. #5
    Registered User
    Join Date
    Mar 2005
    Location
    Mountaintop, Pa
    Posts
    1,058
    I just dont know how to call the CODEC dll from my software.
    I think it's more like instantiating the codec by calling the COM CoCreateInstance to create a codec object.

    Codec programming guide

    BTW, is this application being developed and used by a not-for-profit organization?

  6. #6
    Hardware Engineer
    Join Date
    Sep 2001
    Posts
    1,398
    am so afraid, you mean so far nobody could manage to 'talk' to a codec?
    No! Almost all audio programs (WAV editors, etc.) can interface to any codec. It's just that I don't know how, and I haven't found a reference yet. (Maybe Bob's reference is what I was looking for! )

    When you said "Platform SDK, the Media Format SDK, and the DirectX SDK", do you mean I have to use three of them or only one of them? Could you please explain?
    Sorry, I don't know. I never did find that particular information. I have the Platform SDK and the DirectX SDK. I haven't read everything in them. There is a surprising amount of documentation in the SDKs. But, it seems to be organized more like a tutorial than a reference.... I didn't see organized groups of functions that I could browse through to see which ones I need etc. Hopefully, there are others here who can give you better guidance... I've been fooling around with Windows programming for quite a while, but I'm still just a beginner.

    P.S. I looks like Bob's MSDN link only covers the Windows Media Format... I don't know how much of that applies to other codecs (MP3, etc.). Then again, WMA files might work for you.

    Ooooh! I found something very interesting on MSDN: Using CODEDs to Compress Wave Audio. I hope it's not too outdated... It references Win95 and WinNT.

    P.P.S. Yes, It's outdated... The Platform SDK says that the ACM codecs are "deprecated". It says there are 3 types of codecs:

    ACM (and VCM)
    Direct Show Filters
    DirectX Media Objects (DMOs)

    I found that in the DirectX section of the Platform SDK, and I assume that it's duplicated in the DirectX SDK.
    Last edited by DougDbug; 04-22-2006 at 12:36 PM.

  7. #7
    Registered User
    Join Date
    Apr 2006
    Posts
    28
    Quote Originally Posted by BobS0327
    I think it's more like instantiating the codec by calling the COM CoCreateInstance to create a codec object.

    Codec programming guide

    BTW, is this application being developed and used by a not-for-profit organization?

    Hi, BobS0327, thank you very much for your reply.

    For your information, this software will be used for children with speech inability or speech problem in our speech rehabilitation centre. I work part time there to help with the rehabilitation process.

    I am sorry, I dont understand. Could you please elaborate on the "COM CoCreateInstance" that you stated above?

    Please, I really need your help in this very beginning. I promised I will be as independent as possible, please.

  8. #8
    Registered User
    Join Date
    Apr 2006
    Posts
    28
    Quote Originally Posted by Salem
    Convert your wavs to mp3, which is a much more compact audio format.
    http://www.google.com/search?q=wav+to+mp3

    Or maybe this
    http://technology.niagarac.on.ca/cou...ileFormat.html
    Use this to drop the bit rate, number of audio channels or whatever else you can get rid of to reduce the file size.
    Speech doesn't need stereo, and it doesn't need a particularly high bit rate either.

    Hi, Salem, thank you very much for your post, appreciate.
    I cant use third-party software that is 'outside' of my software project platform. I need to call the CODEC dll from my software.
    My problem is I dont know how to call the dll from my software.

    Can you please link me to the page that got tutorial on how to link the dll from my software?
    For your information, I didnt use stereo. I used mono, 16kHz, 16 bits.

    In order to reach my purpose to save all wave files in single floppy, I need to reduce sampling rate from 16k to 8k and ALSO reduce the 16 bits to 8 bits. But, I dont know by reducing 16 bit to 8 bit will influence much on the quantization level and thus influence much on the scores pratice by children.
    That's why I think compression is the only solution for me to save all 20 wave files into single floppy disk.
    Please correct me if I am wrong.

    Can you please link me to the page with tutorials or details on how to call CODEC dll from my software its own? Please really need your help, please, Salem

  9. #9
    Yes, my avatar is stolen anonytmouse's Avatar
    Join Date
    Dec 2002
    Posts
    2,544
    Yes, it is easy to call an EXE from your program (no intermediate DLL is required).

    There are a number of audio compression formats you can use, but for your purpose I suggest you consider Speex. It is a free open source format, with command line tools, and is designed specifically for speech.

    - Download Speex here. You want the Windows binaries.
    - You can find examples of the encoding quality here.
    - The command line options can be found here. The simplest command line is: speexenc input.wav output.spx

    Once you have got the command line working, you can ask back here about integrating it into to your program.

    The things you'll need to know when calling the command line from your program:
    - The location of the input file. (ie. Where did your program put the wave file?)
    - The destination path for the output file. (You can ask the user).
    Last edited by anonytmouse; 04-25-2006 at 03:06 AM.

  10. #10
    Registered User
    Join Date
    Apr 2006
    Posts
    28
    Quote Originally Posted by anonytmouse
    Yes, it is easy to call an EXE from your program (no intermediate DLL is required).

    There are a number of audio compression formats you can use, but for your purpose I suggest you consider Speex. It is a free open source format, with command line tools, and is designed specifically for speech.

    - Download Speex here. You want the Windows binaries.
    - You can find examples of the encoding quality here.
    - The command line options can be found here. The simplest command line is: speexenc input.wav output.spx

    Once you have got the command line working, you can ask back here about integrating it into to your program.

    Hi, Anonytmouse, thank you very much for your kind post.

    I will study in detail and try to implement it in my own project and will tell you how I am going.

    I am so touched and you and those in this forum are willing to give me some guidance as I am totally down for that past few days, thanks for telling me. I will do my best.

  11. #11
    Registered User
    Join Date
    Apr 2006
    Posts
    28
    Hi, Anonytmouse, thanks for your post, appreciate.

    I have read the manual pdf file but I still dont know where can I write any command line. I run the exe but it disappeared in blink and I couldnt manage to write any command line on it. Therefore, I cant test whether the command line works for me or not.

    I have listened to the examples of male and female for the encoding quality. It is good enough for our application.

    Please forgive me if I did any mistake.
    Last edited by cindy_16051988; 04-25-2006 at 09:58 PM. Reason: spelling

  12. #12
    Lurking whiteflags's Avatar
    Join Date
    Apr 2006
    Location
    United States
    Posts
    9,612
    To run the exe file,
    - Go to Start -> Run...
    - At the prompt, type "command" which will open an MS DOS command prompt.
    - type "cd" and type the directory the .exe is in
    - At the prompt, type the exe's name, followed by the parameters you want. Parameters are usually separated by spaces.
    - Press Enter. Yay.

  13. #13
    Registered User
    Join Date
    Apr 2006
    Posts
    28
    Quote Originally Posted by citizen
    To run the exe file,
    - Go to Start -> Run...
    - At the prompt, type "command" which will open an MS DOS command prompt.
    - type "cd" and type the directory the .exe is in
    - At the prompt, type the exe's name, followed by the parameters you want. Parameters are usually separated by spaces.
    - Press Enter. Yay.
    Sorry, please forgive me, I still could not run the exe file, sorry, please forgive me.
    I attached the file as I could not figure out where I did wrong.

  14. #14
    Yes, my avatar is stolen anonytmouse's Avatar
    Join Date
    Dec 2002
    Posts
    2,544
    Run "cmd" instead of "command" and then type:
    Code:
    cd "D:\Program Files\Speex"
    This should get you to the correct directory where you can try out command lines.

  15. #15
    Registered User
    Join Date
    Apr 2006
    Posts
    28
    Quote Originally Posted by anonytmouse
    Run "cmd" instead of "command" and then type:
    Code:
    cd "D:\Program Files\Speex"
    This should get you to the correct directory where you can try out command lines.
    Hi, Anonytmouse, thank you for your post. I am now manage to go in the correct directory and will try out the command lines. Thanks.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. opening an MP3 file for bit access
    By gaza2k1 in forum C Programming
    Replies: 13
    Last Post: 02-24-2008, 09:08 PM
  2. mp3 file renamer
    By Loic in forum C++ Programming
    Replies: 6
    Last Post: 10-17-2007, 12:52 PM
  3. MP3 file searching question
    By panfilero in forum C Programming
    Replies: 4
    Last Post: 11-27-2005, 01:19 PM
  4. Edit mp3 File Names
    By willc0de4food in forum C Programming
    Replies: 20
    Last Post: 04-10-2005, 11:45 PM
  5. wave player or mp3 player using C
    By lliero in forum C Programming
    Replies: 5
    Last Post: 02-27-2002, 11:33 AM