将数据转换为声音并再次转换回来

8

有没有可以将数据(文本文件等)转换为声音,然后再将声音转回原始数据的库?

声音可以通过任何我想要的介质传输,如无线电等。我只需要将数据存储在声音文件中。

场景:

步骤1:将带有嵌入图像的.docx文件转换为.wav文件。

步骤2:通过无线电波发送。

步骤3:将.wav文件转换回带有嵌入图像的.docx文件。

这个概念适用于任何数据。

技术:

.NET或Java


3
好的。但是为了得到有用的答案,您需要更具体地说明您希望如何传输声音。 - Ignacio Vazquez-Abrams
1
声音就是数据。除非你解释得更好,否则我会投票关闭。 - Yakov Galka
1
现在好多了。所以你想要实现某种调制解调器。虽然没有听说有任何库可用。 - Yakov Galka
找一台旧的http://en.wikipedia.org/wiki/Acoustic_coupler和一个麦克风...;-) - Lucero
在1和2之间是否缺少一个步骤,涉及通过有损介质进行传输和接收? - Andiih
6个回答

4
我认为媒介很重要,其他因素如文件大小和传输时间也同样重要。一个简单的算法是将您的文件转换为文本(UUENCODE应该可以做到这一点),然后将其转换为摩尔斯电码:http://www.codeproject.com/KB/vb/morsecode.aspx
摩尔斯电码提供了一个简单的字母表,能够在相当嘈杂的无线电频道上传输。
如果您的载体更干净,那么将您的UUEncoded文件转换为每个字符一个频率的一系列频率也可能有效,并且在另一端易于解码:Frequency Analyzer in C#

1
问题在于 Word 文档中的数据并不一定能产生良好的声音效果。如果选择一个 1.8kHz 的载波,并使用 Word 文档的二进制内容来调制音量或频率(AM 或 FM),结果会很混乱,几乎无法解码。
但是,如果将文档保存为位图,您可以使用像素值来调制载波波形的音量。
多年来,我们一直使用这种方法通过电话线发送图片(不仅是黑白,还有灰度和彩色(图像的三个不同分离,r、g 和 b)),在调制解调器和互联网兴起之前。
有趣的是,您可以通过这种方式广播数据。声音可以同时被多个接收器接收。虽然没有纠错功能,但由于处理的是视觉数据,所以您不必担心会丢失一些像素。这类似于旧传真协议。

1
你可以尝试使用磁卡技术来处理文件,我也在 Android 上尝试这样做。任何数据都可以转换为字节,成为一串字符,Java 和 Android 都很容易实现。然后使用磁卡 API 的编码机制将字符串编码为声音。然后你只需要反过来,将声音转换为字符串,再将字符串转换为字节并保存数据。虽然双向转换需要时间,但是这是可行的。我正在尝试这样做,以便任何拥有无限语音连接的人都可以传输文件,或在未来通过呼叫其他号码来浏览互联网。希望我给你提供了一些想法。

0

最好的方法是将音频文件转换为二进制并存储在您指定的文件类型中。

尝试使用Java中的AudioInputStream类


1
如果你是通过无线电传输的话,就不会这样。 - Ignacio Vazquez-Abrams
1
好的,如果他能告诉我如何将二进制转换回音频文件,那他已经成功了一半 :) - Shawn Mclean

0

音频文件是否需要使用有损压缩器(如MP3)进行转换?如果不需要,您可以将任何二进制数据添加到WAV容器中,这样就可以了。否则会更加困难,您需要确保音频是可听的(在播放时具有合理的频率范围),并且对于频率检测要足够宽容,以匹配有损编解码器的输出。


我认为从问题中提到的无线电可以推断出是有损压缩,但不是很清楚。我猜步骤1和2之间可能还有一步遗漏! - Andiih

0
为了更好地回答以上问题,可以看看数据包无线电和与之对应的各种部分,AX.25是一个很好的例子,有许多不同语言的实现。POCSAG也是另一个很好的实现。两者都有可用于许多不同语言的库,并且已经存在了相当长的时间。
其他例子包括WEFAX(天气传真),HFFax,SSTV(慢速扫描电视)等。
您可以将它们全部视为类似于旧式电话线调制解调器类型的编码器和解码器,其速率在300-2400波特之间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接