繁体   English   中英

使用不同格式将音频从文件渲染到语音处理音频单元

Rendering Audio from a File to Voice Processing audio Unit using different formats

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用Core Audio手动播放音乐,作为练习与CoreAudio一起学习。 因为我的目的是学习,所以我想了解为什么以下方法不起作用。

当我简单地创建这两个单元而不将它们连接在一起(手动或使用AUGraph)时,一切工作正常:

  • outputAU(kAudioUnitSubType_VoiceProcessingIO)
  • fileGeneratorUnit(kAudioUnitType_Generator)

相反,我在outputAU上配置了一个渲染回调,以便在内部可以调用以手动填充ioData。

var err = AudioUnitRender(outputAU,&flags,&ts,inBusNumber,inNumberFrames,&ioData!.pointee)

我的outputUnit可以播放歌曲,效果很好。

但是,如果我将outputUnit的格式更改为以下格式,它将停止工作:

var format = AudioStreamBasicDescription(mSampleRate: 44100,
                                         mFormatID: kAudioFormatLinearPCM,
                                         mFormatFlags: kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked,
                                         mBytesPerPacket: bytePerSample, // bytePerSample = 2
                                         mFramesPerPacket: 1, 
                                         mBytesPerFrame: bytePerSample,
                                         mChannelsPerFrame: 1,
                                         mBitsPerChannel: 8 * bytePerSample,
                                         mReserved: 0)  

我在输出和输入范围都设置了这种格式,如下所示:

error = AudioUnitSetProperty(outputAU,
                             kAudioUnitProperty_StreamFormat,
                             kAudioUnitScope_Output,
                             input,
                             &format,
                             UInt32(MemoryLayout<AudioStreamBasicDescription>.size))

guard error == noErr else {
    print("An error occured \(error)")
    return
}

error = AudioUnitSetProperty(outputAU,
                             kAudioUnitProperty_StreamFormat,
                             kAudioUnitScope_Input,
                             output,
                             &format,
                             UInt32(MemoryLayout<AudioStreamBasicDescription>.size))

guard error == noErr else {
    print("An error occured \(error)")
    return
}

我的AudioUnitRender通话现在不断返回-50。 而且我无法填充缓冲区。 我有兴趣了解那里的情况以及如何解决此问题。

谢谢!

问题暂未有回复.您可以查看右边的相关问题.
1 Mac OS X上语音处理单元的可用格式

我正在使用vpio音频单元在Mac OS X上进行捕获和播放。 一切顺利,直到我在vpio单元上设置了输入/输出格式。 我想要的格式是这样的: 我可以在vpio的(输入总线/输出范围)上设置此格式,但是无法在vpio的(输出总线/输入范围)上设置它,这样我会得到错误代码(kA ...

2 AVAudioEngine 和语音处理单元 MacOS

我正在尝试为使用 AVAudioEngine 接收输入音频构建一个非常简单的测试,其中输入节点在 MacOS 上启用了语音处理。 我已经看到 iOS 的示例,它们使用了 AVAudioSession,但在 MacOS 中不可用。 我的代码非常简单,如下所示。 如果我不启用语音处理,我可以启动引擎。 ...

4 使用Android进行语音处理的预强调

我正在开发需要实现梅尔频率倒谱系数(MFCC)进行语音识别的应用程序。 MFCC的第一步是应用预加重 预加重将增加高频信号的能量。 因为低频带被对语音识别无用/有害的声音占据。 我找到了这个过程的等式: 我的问题是我应该只将这个方程式应用于原始信号吗? 这样就可以增 ...

5 实时语音处理不和谐?

Gday 伙计们, 我和我的朋友想和我们的另一个朋友一起玩宾果游戏。 基本上每次我们一起玩,他都会大发雷霆,说些搞笑的话。 最初的计划是在一个 3x3 的网格中写下单词。 当他说某事时。 你写下来,你可以跨越它。 如果您以对角线、垂直线或水平线穿过所有单词,则您获胜。 但是我作为程序员不想使用 ...

6 SailAlign软件安装语音处理

歧义性调用解析为CORE :: read(),符合条件,或在(eval 23)第4行使用&。子例程Audio :: Wav :: Read :: read在/usr/local/share/perl/5.14.2重新定义/Audio/Wav/Read.pm第316行。[FATAL](/usr/loc ...

7 混合不同格式的Android音频文件

我有两个音频文件,其中.mp3和.3gp具有不同的时序,但是我想将这些音频混合并以一个时序生成一个音频文件。 如果第一个音频是30秒,第二个音频是2分钟,我想混合两个仅30秒的音频。 第一个音频结束后,应停止混音。 我希望将音频保存在文件中。 目前,我可以使用mediaPlayer播 ...

8 使用不同格式解析时间

我有一个字符串,我需要转换为日期时间格式。 问题是它并不总是具有相同的格式。 现在我正在使用try,除了尝试我可能遇到的所有格式(参见下面的代码)。 对于所有时间格式,有没有办法一般地执行此操作? ...

9 在 Botium 语音处理中,MaryTTS api 以二进制数据的形式给出响应。 我如何转换并将其作为音频获取?

我是 Botium 语音处理的初学者。 我正在尝试将文本转换为语音转换,并且正在使用在 botium 语音处理下配置的 MaryTT。 我配置了 Docker,从 SwaggerUI 我可以看到 TTS 的响应是一个二进制数据。 请找到下面的截图: 在此处输入图片说明 如何处理这些数据并将其转换为 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM