Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1281
  • Last Modified:

Convert WAV to TEXT

Convert WAV to TEXT

How to convert WAV to TEXT and play sound from text ?

For example : convert from Wave to Memo.Text and play it from Memo.Text

Thanks.
0
sasabistrovic
Asked:
sasabistrovic
  • 6
  • 5
  • 5
  • +1
1 Solution
 
BlackTigerXCommented:
you can add the "Microsoft Speech Recognition" and "Microsoft Direct Text-To-Speech" Activex Controls, I have used the Microsoft Text-To-Speech control, and all you have to do besides dropping the component on the form, is call it something like
myControl.Speak('The text here'); or myControl.Speak(Memo1.Text);

use the Component Menu | Import ActiveX control, you'll see those (Microsoft) names listed
0
 
Colin_DawsonCommented:
How exactly do you want to convert WAV to TEXT?   Do you mean spoken words into Text then when you press play turn the words back into speech?

Or do you mean take the RAW binary data that makes up the WAV format and place that into the Text?  It won't be readable.  

I think you need to post more information about what you're trying to accomplish.
0
 
sasabistrovicAuthor Commented:
No, I didn't mean Text-To-Speech.

Yes, something like taking RAW binary data that makes up the WAV format and place that into the Text.

Thanks.

Sorry, I'm beginner in that.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
EvarestCommented:
This can easily be done with the following function

function ConvertRawFileToText( FileName: string ): string;
var
 Q: integer;
 StringStream: TStringStream;
 MemoryStream: TMemoryStream;
 str: string;
begin
 MemoryStream :=TMemoryStream.Create;
 StringStream :=TStringStream.Create('');
 MemoryStream.LoadFromFile(FileName);
 StringStream.CopyFrom(MemoryStream, 0);
 result :=FastReplace( StringStream.DataString, #0, #1 );
 StringStream.Free;
 MemoryStream.Clear;
 MemoryStream.Free;
end;

The call to FastReplace requires you to include in uses the unit FastStrings.

This can be downloaded from http://www.swissdelphicenter.ch/torry/showcode.php?id=1857

The trick is that you must replace the #0 (null) characters by something else. I chose #1.

Evarest
0
 
EvarestCommented:
And of course, use it as follows:

procedure TForm1.Button1Click(Sender: TObject);
begin
 RichEdit1.Text :=ConvertRawFileToText('C:\WINDOWS\Media\ringin.wav');
end;

Evarest
0
 
EvarestCommented:
If you want to play the sound directly from that Text, you'll need to remember which characters you've replaced... Then it's best to use another method to replace the characters and save the positions in some sort of List.

I can't understand however why you'd like to play from a memo, as you have the WAV on your system. You can play it by calling

var
 aFile: string;
begin
 aFile :='C:\WINDOWS\Media\ringin.wav';
 sndPlaySound(pChar(aFile),snd_Async or snd_NoDefault);
end;

and include MMSystem in the uses of your unit.

Evarest
0
 
Colin_DawsonCommented:
Taking things a step further, instead of FastReplace( StringStream.DataString, #0, #1 );  Which is not really a good idea, as there's a legitimate reason for #0's in this string, you should cycle through the sound file and convert each Byte into it's hex representation.   Before you play the sound you'll need to convert it back.  Another alternative would be to BASE64 encode the stream.  (probably quicker)

you can find components that do the Base64 encode and decode for you at torry.net

Here's a link...  http://www.torry.net/pages.php?id=210   DIMime works pretty well.
0
 
EvarestCommented:
"Which is not really a good idea, as there's a legitimate reason for #0's in this string,"

Indeed, but the initial question was a text representation of the WAV file. This can only be done if you replace all occurencies of #0 by some other representable character.

Evarest
0
 
Colin_DawsonCommented:
Or alternatively encodeing the entire binary file in such a way that you can decode it back into it's original form.

Before I forget, in Win9x the TMemo is limited to 64KB of text MAX.  It's 2GB for Win2000/xp.  You need to becareful that you don't overrun the memo component with data.
0
 
EvarestCommented:
"Before I forget, in Win9x the TMemo is limited to 64KB of text MAX.  It's 2GB for Win2000/xp.  You need to becareful that you don't overrun the memo component with data."

That's why i used a TRichEdit :-) However, loading really large files into a textbox can be quite (very) slow. Some optimization may then be needed...
0
 
sasabistrovicAuthor Commented:
Well thanks.

How to ConvertTextToRawFile (to encode stream) to play wav sound ?
0
 
sasabistrovicAuthor Commented:
I tried to encode wav file and than to decode.

Can I (after encoding file) add something to (modify) wav file ?

procedure TForm1.Button3Click(Sender: TObject);
begin
MimeEncodeFile('C:\WINDOWS\Media\ringin.wav','C:\WINDOWS\Media\ringin_hex.txt');
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
MimeDecodeFile('C:\WINDOWS\Media\ringin_hex.txt','C:\WINDOWS\Media\ringin2.wav');
end;
0
 
Colin_DawsonCommented:
I should have guessed that was comming.   In order to modify a WAV file, you need to work with it in it's encoded form.  You  need to manipluate the data to that it remains compaible with the WAV format.  You'll find details of it here...

http://www.borg.com/~jglatt/tech/wave.htm

if that's no good do a GOOGLE lookup for WAV Format specification  That should get you on the right track.
0
 
sasabistrovicAuthor Commented:
So, Wav file is structured from chunks :

Format Chunk,
Data Chunk,
Cue Chank,
Playlist Chunk,
Associated Data List,
Sampler Chunk and
Instrument Chunk.

How to extract them from Wav file and modify them ?

I read that in Wav file are sample points that are meant to be "played" simultaneously are collectively called a sample frame ?
So there are in Sampler Chunk ?
How to modify them to get a new sound ?

Thanks.
0
 
Colin_DawsonCommented:
Now you're asking a completely different question from the one that you originally asked.
0
 
sasabistrovicAuthor Commented:
Because I open (hex) and save back Wav file with Colin Dawson comment I'll give all experts points to him.

Thanks.
0
 
Colin_DawsonCommented:
Thanks for the points.
I'm sure if you start a new question there are experts that will knowledgable about the inner workings of the wav format.
0

Featured Post

[Webinar] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

  • 6
  • 5
  • 5
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now