小编Kar*_*zki的帖子

CMSampleBufferSetDataBufferFromAudioBufferList 返回错误 12731

我正在尝试捕获应用程序声音并将其传递给 AVAssetWriter 作为输入。
我正在设置音频单元的回调以获取 AudioBufferList。
问题始于将 AudioBufferList 转换为 CMSampleBufferRef。
它总是返回错误 -12731,这表明缺少所需的参数,

谢谢
Karol

-(OSStatus) recordingCallbackWithRef:(void*)inRefCon
                            flags:(AudioUnitRenderActionFlags*)flags
                        timeStamp:(const AudioTimeStamp*)timeStamp
                        busNumber:(UInt32)busNumber
                     framesNumber:(UInt32)numberOfFrames
                             data:(AudioBufferList*)data
{

AudioBufferList bufferList;
bufferList.mNumberBuffers = 1;
bufferList.mBuffers[0].mData = NULL;

OSStatus status;

status = AudioUnitRender(audioUnit,
                         flags,
                         timeStamp,
                         busNumber,
                         numberOfFrames,
                         &bufferList);
[self checkOSStatus:status];

AudioStreamBasicDescription audioFormat;
// Describe format
audioFormat.mSampleRate         = 44100.00;
audioFormat.mFormatID           = kAudioFormatLinearPCM;
audioFormat.mFormatFlags        = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
audioFormat.mFramesPerPacket    = 1;
audioFormat.mChannelsPerFrame   = 1;
audioFormat.mBitsPerChannel     = 16;
audioFormat.mBytesPerPacket     = 2;
audioFormat.mBytesPerFrame      = 2;

CMSampleBufferRef buff = NULL;
CMFormatDescriptionRef format = …
Run Code Online (Sandbox Code Playgroud)

iphone core-audio avfoundation audiounit ios

6
推荐指数
1
解决办法
2013
查看次数

小词汇量语音识别(约20字)

我目前正在为我的大学做一个项目。任务是编写语音识别系统,该系统将在后台运行在手机上,等待一些命令(例如 call 0 123 ...)。

这是 2 个月的项目,所以它不必非常准确。可接受的噪音量可能很小,并且单词将被片刻的沉默隔开。

我目前正在加载以 RAW 16 位 PCM 格式编码的示例字。将其拆分为块(每秒约 50 个)并在每个块上运行 FFT 以获得频谱。

需要解决的问题是:1)通过较长的录音并将其拆分为单词。2)找到最匹配的词

1)我正在考虑只检查一个接一个的块,如果我遇到几个具有更高人类语音频率的块,则认为该词已经开始。无论如何,我正在寻找可能对此有所帮助的资源。

2)这个接缝有点硬。是否有必要将 HMM 用于这样的系统,或者假设词汇量如此之小(20 个单词),是否有更简单的方法?

编辑:该项目的重点是我自己编写系统,所以我不能使用像 Sphinx 或 HTK 这样的现成库。

问候, 卡罗尔

c++ speech-recognition fft speech-to-text hidden-markov-models

5
推荐指数
1
解决办法
1282
查看次数

如何在不使用从 C 导出的函数的情况下在 Linux 中使用 NASM 程序集获取系统时间?

我正在为我的大学做一个项目。任务是打印当前日期和时间。我成功地创建了一个打印数字的子程序,我现在需要的只是获取日期。我试过这种方法:

%define RTCaddress  0x70
%define RTCdata     0x71

;Get time and date from RTC
.l1:    mov al,10           ;Get RTC register A
        out RTCaddress,al
        in al,RTCdata
        test al,0x80            ;Is update in progress?
        jne .l1             ; yes, wait

        mov al,0            ;Get seconds (00 to 59)
        out RTCaddress,al
        in al,RTCdata
        mov [RTCtimeSecond],al
Run Code Online (Sandbox Code Playgroud)

但只是打电话:

.l1:    mov al,10           ;Get RTC register A
        out RTCaddress,al
Run Code Online (Sandbox Code Playgroud)

足以导致崩溃。您知道如何解决这种方法吗,或者我可以使用任何不同的方法。我正在 Linux 64 位上使用 Nasm。

linux x86 assembly x86-64 nasm

2
推荐指数
1
解决办法
4038
查看次数