我正在为需要以 PCM 格式、44100hz 采样率、16 位、单声道发送音频的 Text-to-Speech 软件产品编写 iOS 客户端,因此我正在使用 LPCM 进行录制。要求用户可以点击播放后听到自己的声音,因此服务器会按照录制的方式发送音频。
现在,在播放时,我正在使用 AudioStreamer: https ://github.com/mattgallagher/AudioStreamer ,并且我一直在使用缓冲区大小等进行大量播放。截至目前,我正在使用 64kbytes 缓冲区并在至少三个缓冲区被满足时开始播放,而总数为 16 个缓冲区以避免耗尽可用缓冲区。
事情是这样的:在 WiFi 下播放时,填充缓冲区比使用 3G 或 4G 时需要更多的时间。疯了!这是我添加的用于查看缓冲区如何填充的日志,您可以看到数据包不超过几千字节。我想知道这是否正常。有了 3G,它们就比 WIFI 流畅多了……</p>
2013-09-16 23:50:35.997 < AudioStreamer.m:(1855)> 处理传入数据,1382 字节,bytesFilled 19340 2013-09-16 23:50:36.017 < AudioStreamer.m:(1415)> AudioFile 流Parse Bytes 2013-09-16 23:50:36.018 < AudioStreamer.m:(1855)> 处理传入数据,5528 字节,bytesFilled 20722 2013-09-16 23:50:36.020 < AudioStreamer.m:(1415)> AudioFile Stream Parse Bytes 2013-09-16 23:50:36.021 < AudioStreamer.m:(1855)> 处理传入数据,1382 字节,bytesFilled 26250 2013-09-16 23:50:36.031 < AudioStreamer.m:(1415 )> AudioFile Stream Parse Bytes 2013-09-16 23:50:36.032 < AudioStreamer.m:(1855)> 处理传入数据,1382 字节,字节数为 27632 2013-09-16 23:50:36.034 < AudioStreamer.m: (1415)> AudioFile 流解析字节
这使得缓冲区在 Wifi 下要多花几秒钟。
64 KB - 3 个缓冲区。无缝隙,WIFI
2013-09-17 19:29:48:553 AudioStreamer 等待数据
2013-09-17 19:29:52:094 开始使用缓冲区播放音频队列 3
64 KB - 3 个缓冲区。没有差距,在 3G 上:
2013-09-17 19:27:33:680 AudioStreamer 等待数据
2013-09-17 19:27:35:954 开始使用缓冲区播放音频队列 3
如您所见,3G 似乎快了一倍.. 有什么线索吗?