标签: audio-recording

自动将音轨与配音屏幕录像的时间对齐

我们有一些屏幕截图需要配音为各种语言,我们有目标语言的文本脚本,如下所示:

开始时间音频旁白

0:0 废话 nao lorep iposm...

1:20 xao dok dkjv dwv....

..

我们可以单独记录上述每个单元,然后将其对齐在上面脚本中提到的正确开始时间。

例子:

输入:

输入N个计时值:0:0,1:20...然后输入N个录音

输出:

录音与上述时间一致。系统应单独检测上溢,而下溢则通过静默来填充。

是否有任何独立于平台的音频 api \ 软件或代码片段(最好是 python 中的代码片段)允许我们根据提供的时间对齐这些音频单元?

python audio audio-recording

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

iOS 通话后后台录音

我正在开发一个在后台录制音频的 iOS 应用程序。这工作很好。
问题是当有电话进来时:当我打电话时,应用程序停止录制(这很好),但是当通话结束时,我需要应用程序再次开始录制。

是否可以 ?我怎样才能做到这一点 ?

谢谢大家。

更新

我使用 AudioQueueNewInput 来录制音频。现在我尝试使用此代码来接听来电:

AVAudioSession *session = [AVAudioSession sharedInstance];
NSError *categoryError = nil;
[session setActive: NO error: nil];
if (![session  setCategory:AVAudioSessionCategoryPlayAndRecord
               withOptions:AVAudioSessionCategoryOptionMixWithOthers
                     error:&categoryError]){
    NSLog(@"Error"); //no error
}
[session setActive: YES error: nil];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleAudioSessionInterruption:)
                                             name:AVAudioSessionInterruptionNotification
                                           object:session];
Run Code Online (Sandbox Code Playgroud)

我可以通过 AVAudioSessionInterruptionOptionShouldResume 获取 handleAudioSessionInterruption 的通话结束,但是如何重新启动录音机?

我尝试使用再次调用 AudioQueueStart o 只是与我用来开始录制的功能相同的功能,但我看不到红色条(正在使用麦克风)来知道应用程序正在录制。怎么了 ?

audio-recording ios

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

消除录制音频中的背景噪音

我正在尝试在 Android 上同时录制和播放音频。但录制的音频有更多噪音,如 zzzzz...

我想过滤掉音频中的噪音。我的代码是

private void record() {

    // Get the minimum buffer size required for the successful creation
    // of an AudioRecord object.
    int N = AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING);
    audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, N * 10,
            AudioTrack.MODE_STREAM);

    AudioRecord audioRecorder = null;
    int bufferSizeInShorts;
    int shortsRead;
    short audioBuffer[];

    try {

        bufferSizeInShorts = (N / 2);

        // Initialize Audio Recorder.
        audioRecorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_RECOGNITION, RECORDER_SAMPLERATE, RECORDER_CHANNELS,
                RECORDER_AUDIO_ENCODING, N * 10);

        NoiseSuppressor.create(audioRecorder.getAudioSessionId());


        // Start Recording.
        audioBuffer = new …
Run Code Online (Sandbox Code Playgroud)

audio android audio-recording

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

如何用arecord录制单声道?

我正在使用SpeechRecognition包进行文本转语音。然而,它的 WAV 文件输入必须是单声道。当我使用arecord -D plughw:0 --duration=5 -f cd -vv ~/test.wav并使用它播放时aplay test.wav,我得到(它播放):

Playing WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Run Code Online (Sandbox Code Playgroud)

如何以arecord单声道录音?我也尝试添加--channels=1,但当它开始记录并显示有关其 ( Plug PCM: Route conversion PCM) 设置的信息时,它总是显示:

...
channels    : 2
...
Run Code Online (Sandbox Code Playgroud)

USB PnP Sound Device的设置显示通道为 1。即使我将其设置为 1,它也以立体声播放。怎么了?

speech-recognition audio-recording raspberry-pi raspbian

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

如何使用 javascript 从 Audio Element 录制音频

我正在使用 HTML5 和 Javascript 制作录音机,并且不想包含任何第三方 API,我的第一步是使用<audio>标签和navigator.webkitGetUserMedia函数创建音频检索器和播放器,从麦克风获取音频并通过<audio>元素播放,但是此时我无法获取数组中的音频数据,我不知道该使用哪个函数做什么。

html javascript audio audio-recording getusermedia

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

如何自动转录 Skype 会议,并正确归属于每个参与者?

假设每个参与者都同意 Skype 通话的录音和转录,是否有一种方法可以转录会议(实时或离线或两者兼而有之),以便生成文本记录,其中每个口头文本都正确归属于发言者。然后可以将转录本输入到任何类型的搜索或 NLP 算法中。

“自动转录 Skype”的 Google 搜索前 3 名指的是使手动转录变得更容易的应用程序:

(1) http://www.dummies.com/how-to/content/how-to-convert-skype-audio-to-text-with-transcribe.html

(2) http://ask.metafilter.com/231400/How-to-record-and-transcribe-Skype-conversation

(3) https://www.ttetranscripts.com/blog/how-to-record-and-transcribe-your-skype-conversations

虽然录制音频并将其发送到语音转文本引擎很简单,但我怀疑它的质量是否会非常高,因为最好的结果通常是依赖于说话者的模型(否则我们就不必花时间来训练龙自然言)。

但是,在我们选择说话者相关转录模型之前,我们需要知道音频的哪个片段属于哪个说话者。有两种方法可以解决这个问题:

  1. 有一种简单的方法可以检索来自每个参与者的所有音频,例如,您只需在通话期间记录每个扬声器麦克风的所有音频,而无需进行任何分段。

  2. 如果第一个选项在某种程度上不可行或令人望而却步,我们必须使用说话人分类算法,该算法将音频分割成 N 个簇/说话人(大多数算法允许知道音频中有多少个说话人,但有些算法可以自己解决这个问题)。对于通话过程中的实时转录,我想我们需要一些奇特的实时说话者分类算法。

无论如何,一旦解决了分割问题,每个参与者都会拥有经过训练的说话者模型,然后将其应用于他们的音频部分。一天结束时,每个人都会得到一份不错的对话记录,稍后我们可以做一些花哨的事情,比如主题分析,或者也许老大哥想要筛选每个人的项目会议,而不必听几个小时的音频。

我的问题是,在实践中实施这一点的方法是什么?

nlp skype audio-recording speech-to-text transcription

5
推荐指数
0
解决办法
4452
查看次数

Google Speech API - 识别 Base64 编码的音频

我已经在 Google Speech API 上苦苦挣扎了一段时间,希望得到一些建议。

这就是我想做的:

  1. 在浏览器中录制音频
  2. 将录音转换为 Base64 并发送到我的服务器
  3. 在服务器上,调用Google Speech API的syncRecognize函数,传入我的base 64编码音频

我总是收到一个空的结果对象。

当我按照此入门教程进行操作时,一切正常。

我究竟做错了什么?

任何提示/想法将非常感激。

const Speech = require('@google-cloud/speech');
const SpeechV1beta1 = require('@google-cloud/speech/src/v1beta1')

module.exports = {

    syncRecognize: function(base64Encoding) {

       const speech = Speech();
       const speechV1beta1 = SpeechV1beta1();
       const client = speechV1beta1.speechClient();

       const body = {
           "config": {
               "encoding":"LINEAR16",
               "sampleRate":16000,
               "languageCode":"en-US"
           },
           "audio": {
              "content": base64Encoding
           }
       }

       return client.syncRecognize(body)
        .then((results) => {
            console.log('results', results) 
            return {transcription: results[0]};
        }).catch(function(error) {
            return {error: error};
        });;

    }
}
Run Code Online (Sandbox Code Playgroud)

audio-recording google-speech-api

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

如何在 python 中录制不确定持续时间的音频并允许暂停和恢复功能?

我正在编写一个Python应用程序来将音频录制为WAV文件,直到用户按下暂停停止。暂停音频后,用户还应该能够恢复录制。此外:

  • 应用程序无法预先知道录音会持续多长时间
  • 应用程序应避免内存不足(因为录制可能会很长)。例如,它可以实时写入 WAV 文件,以防止将不断增长的录音存储在内存中。

解决这个问题的好方法是什么?您能为您的解决方案提供一些代码片段吗?

使用python-sounddevice,我可以stop()通过start()流来模仿“暂停”功能。我可以指定一个 numpy 数组作为记录的输出。但:

  • 我不知道要制作多大的数组(因为我不知道录制持续时间)
  • 当数组填满时我该怎么办?

python-sounddevice 和 sound-file可以支持在事先不知道大小的情况下进行录音。但:

  • 我如何合并“暂停”和“恢复”功能?声音文件只有readwrite方法。
  • 有没有比使用更好的方法来停止流KeyBoardInterrupt
  • 我可以在每次“暂停”后创建不同的录音,并在用户单击“停止”后合并 WAV 文件吗?
  • 我尝试使用Threading.Event()阻止录制线程来模拟暂停功能,但录制不断写入文件

我的sound-device尝试

paused = False

def record():
    self.recording = ? # create numpy.ndarray of the correct size 
                       # (not sure the best way to do this without 
                       # knowing the recording duration)
    with sd.InputStream(samplerate=44100, device=mic, channels=1, 
        callback=self.callback): …
Run Code Online (Sandbox Code Playgroud)

python audio audio-recording python-3.x python-sounddevice

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

CoreAudio:使用 kAudioUnitSubType_VoiceProcessingIO 计算输入和输出之间的总延迟

我正在 iPhone/iPad 上使用 CoreAudio 开发一个应用程序。该应用程序既通过扬声器(输出)播放音频,又同时从麦克风(输入)录制音频。就本应用程序而言,能够比较输入和输出,特别是它们在时域中的“排列”程度,这一点非常重要。因此,正确计算输入和输出通道之间的总延迟至关重要。

我正在 3 种不同的设备上进行测试。一部 iPhone、一部 iPad 和模拟器。我凭经验确定 iPhone 的延迟约为 4050 个样本,iPad 接近 4125 个样本,模拟器大约为 2500 个样本。

经过大量研究(又称谷歌搜索),我在网上发现了一些关于计算 CoreAudio 延迟的讨论,但它们通常涉及在 OSX 而不是 iOS 上使用 CoreAudio。因此,它们指的是 iOS 上不存在的各种功能。然而,对于 iOS 来说,正确的解决方案似乎是使用、和AVAudioSession的某种组合。然而,这些值的组合似乎无法达到上述凭经验确定的值。此外,当我在调用之前和之后检查每个参数时,我会得到截然不同的值。更令人困惑的是,这些值非常接近调用之前的预期延迟,这与我的预期相反。inputLatencyoutputLatencyIOBufferDurationAudioUnitInitializeAudioUnitInitialize

这是我看到的价值观。

  • iPad(之前):in 0.032375,out 0.013651,buf 0.023220,总样本 3054
  • iPad(之后):in 0.000136,out 0.001633,buf 0.023220,总样本1102
  • iPhone(之前):in 0.065125,out 0.004500,buf 0.021333,总样本 4011
  • iPhone(之后):0.000354,out 0.000292,buf 0.021333,样本总数 969

模拟器总是为输入和输出返回 0.01,但我怀疑这些不是实际/正确的值,并且模拟器不支持此功能。

另一个可能有趣的注意事项是我正在使用kAudioUnitSubType_VoiceProcessingIO而不是kAudioUnitSubType_RemoteIO我期望增加一些额外的延迟。我的假设是这将包含在inputLatency值中,但也许我需要查询另一个值来包含它?

确定 iOS 中输入和输出之间的总延迟的正确方法是什么?

audio core-audio audio-recording ios

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

iOS 上的 Flutter、flutter_sound RecordingPermissionException

使用

颤动声音:^8.3.12

我仅在 iOS上遇到问题

扑动:FS:<---channelMethodCallHandler:openPlayerCompleted扑动:FS:<---openAudioSession [VERBOSE-2:ui_dart_state.cc(199)]未处理的异常:“RecordingPermissionException”的实例#0 RecorderExampleState.openTheRecorder(包:projectName/控制器/audioRecorder.dart:46:9)

我还添加到 info.plist:

<key>NSMicrophoneUsageDescription</key>
<string>Allow the app to record using your phone's microphone in order to record description for the new parts</string>
<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>
Run Code Online (Sandbox Code Playgroud)

audio-recording ios flutter

5
推荐指数
0
解决办法
744
查看次数