小编pav*_*163的帖子

Boolean - Kotlin中的Int转换

在Kotlin中没有内置的方法来转换boolean - int吗?我说的是平时:

true -> 1
false -> 0
Run Code Online (Sandbox Code Playgroud)

如果没有,那么这是一种惯用的方法吗?

kotlin

28
推荐指数
3
解决办法
1万
查看次数

将HTML5音频数据发布到服务器

我目前正在实现一个Web应用程序,我希望用户录制一些音频然后我想要一个提交按钮来POST记录到服务器的mp3文件.

我的服务器(Flask)的主要路由'/'是等待POST请求:

@app.route('/', methods=['GET', 'POST'])
def index():
  if request.method == "GET":
    return render_template('index.html', request="GET")
  else:
    print request.files
    print request.form
    print request.form['file']
    if 'file' not in request.files:
      flash('No file part')
      return redirect(request.url)
    file = request.files['file']
    if file.filename == '':
      flash('No selected file')
      return redirect(request.url)
    if file and allowed_file(file.filename):
      handle_file(file)
    return render_template('index.html', request="POST")
Run Code Online (Sandbox Code Playgroud)

这是我的JS代码:

的jsfiddle

这里有两个主要问题:

1)录制后下载mp3文件时,媒体播放器无法打开.在录制音频时,我似乎做错了.

2)当我print request.form在收到POST请求后进入我的服务器时,我只得到这个:

ImmutableMultiDict([('file', u'')])
Run Code Online (Sandbox Code Playgroud)

print request.form['file']返回一个空行.

为什么会这样?POST请求有问题吗?

最后,我希望能够解码我发布的字符串以转换回mp3.我怎么做?

注意:这些都不能保持不变.任务是录制音频,然后将其POST到服务器.如果有更有效的方法,欢迎任何提示.另外,我不在乎文件是wav还是mp3.

javascript python audio html5 flask

14
推荐指数
1
解决办法
4973
查看次数

Librosa音高跟踪 - STFT

我正在使用算法来检测音频文件的音高 .正如您所听到的,它是在吉他上播放的E2音符,背景中有一点噪音.

我使用STFT生成了这个频谱图:频谱

我正在使用上面链接的算法,如下所示:

y, sr = librosa.load(filename, sr=40000)
pitches, magnitudes = librosa.core.piptrack(y=y, sr=sr, fmin=75, fmax=1600)

np.set_printoptions(threshold=np.nan)
print pitches[np.nonzero(pitches)]
Run Code Online (Sandbox Code Playgroud)

结果,我fmin和我之间几乎可以获得所有可能的频率fmax.我该如何处理piptrack方法的输出以发现时间范围的基本频率?

UPDATE

不过,我仍然不确定这些2D数组代表什么.假设我想知道第5帧中82Hz的强度.我可以使用STFT函数来做到这一点,它只返回一个2D矩阵(用于绘制频谱图).

但是,piptrack做一些额外的事情可能是有用的,我真的不明白什么.pitches[f, t] contains instantaneous frequency at bin f, time t.这是否意味着,如果我想在时间帧t找到最大频率,我必须:

  1. 转到magnitudes[][t]数组,找到具有最大幅度的bin.
  2. 将bin分配给变量f.
  3. 找到pitches[b][t]找到属于该bin的频率?

python signal-processing pitch-tracking librosa

13
推荐指数
2
解决办法
5013
查看次数

使用scikit-learn NMF和一组预先计算的基矢量(Python)

我想使用scikit-learn NMF(从这里)(或任何其他NMF,如果它确实起作用,实际上).

具体来说,我有一个输入矩阵(这是一个音频幅度谱图),我想分解它.

我已经预先计算了W矩阵.如何使用一个固定的W¯¯sklearn.decompose.NMF?我还没有找到任何其他问题.

我看到这个方法在fit参数中也提到了类似的东西:"如果为False,假设组件被预先计算并存储在变换器中,并且不会被更改." 但是,我不知道如何制作变换器对象.

python scikit-learn nmf

11
推荐指数
1
解决办法
1008
查看次数

为什么使用Arrow的选项而不是Kotlin可以为空

我正在看看这里找到的Arrow库.为什么要使用一种Option类型而不是Kotlin的内置nullables?

functional-programming kotlin arrow-kt

9
推荐指数
3
解决办法
2244
查看次数

录制的一个音符的音频会产生多个开始时间

我使用Librosa库进行音高和起始检测.具体来说,我正在使用onset_detectpiptrack.

这是我的代码:

def detect_pitch(y, sr, onset_offset=5, fmin=75, fmax=1400):
  y = highpass_filter(y, sr)

  onset_frames = librosa.onset.onset_detect(y=y, sr=sr)
  pitches, magnitudes = librosa.piptrack(y=y, sr=sr, fmin=fmin, fmax=fmax)

  notes = []

  for i in range(0, len(onset_frames)):
    onset = onset_frames[i] + onset_offset
    index = magnitudes[:, onset].argmax()
    pitch = pitches[index, onset]
    if (pitch != 0):
      notes.append(librosa.hz_to_note(pitch))

  return notes

def highpass_filter(y, sr):
  filter_stop_freq = 70  # Hz
  filter_pass_freq = 100  # Hz
  filter_order = 1001

  # High-pass filter
  nyquist_rate = sr / …
Run Code Online (Sandbox Code Playgroud)

python signal-processing pitch-tracking librosa onset-detection

8
推荐指数
1
解决办法
737
查看次数

Google Play Developer API - 400 无效值 - InAppPurchases

我的问题与类似。但是,我使用带有服务帐户的API Java 客户端库,从我的服务器调用 API。

我的代码遵循指南,非常简单。但是,对于我的请求,我似乎无法得到适当的错误。这就是我构建我的方式AndroidPublisher

val credential = GoogleCredential.fromStream(FileInputStream(
        "/path/to/json"
)).createScoped(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER))

androidPublisher = AndroidPublisher.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(packageName)
        .build()
Run Code Online (Sandbox Code Playgroud)

JSON 是从开发人员控制台生成的,位于服务帐户下。这是我提出请求的方式:

androidPublisher.purchases().subscriptions().get(packageName, "valid-sku", "invalid-token").execute()
Run Code Online (Sandbox Code Playgroud)

我的订阅 ID 有效,但我的令牌无效。我希望响应中出现诸如“无效令牌”之类的错误。但是,我得到的是:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid Value",
    "reason" : "invalid"
  } ],
  "message" : "Invalid Value"
}
Run Code Online (Sandbox Code Playgroud)

这是由于令牌无效而导致的一般错误还是身份验证问题?如果是身份验证问题,我该如何解决?如果是无效的令牌问题,我怎么知道?

更多信息:

  • 尝试从 API Explorer 进行该调用时,我也遇到了同样的错误(这次使用客户端 ID 和 API 密钥而不是服务帐户)。
  • 尚未委派对服务帐户的全域访问权限。我必须出于某种原因吗?
  • 我可以成功地对 API进行其他调用,例如 …

java google-api-java-client kotlin google-oauth google-play-developer-api

7
推荐指数
4
解决办法
5901
查看次数

抽象类 - 超级构造函数(Java)

我有一个非常简单的问题:

假设我有一个代表一个人在酒吧里的抽象类.

public class Person {
    protected String firstName;
    protected String lastName;

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}
Run Code Online (Sandbox Code Playgroud)

我还有2个课程可以扩展Person,让我们说一个调酒师课程和一个客户课程.

在客户的课堂上,我也想要一个代表他的年龄的int作为一个领域.在调酒师课上,我们没有.

另外,对于客户类,我想要一个方法isAdult().

public class Bartender extends Person {
    public Bartender(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

public class Customer extends Person {
private int age;    

    public Customer(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在有两个问题:

1)这不起作用,因为我收到消息"隐式超级构造函数Passenger()未定义.必须显式调用另一个构造函数".这到底是什么意思?2)对于方法isAdult(),我觉得最好的方法是在抽象类Person中实现它,如下所示:

public …
Run Code Online (Sandbox Code Playgroud)

java class abstract

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

检查javascript字符串是否有效UTF-8

用户可以复制并粘贴到textarea html输入中,有时会粘贴无效的UTF-8字符,例如,从包含选项卡的rtf文件中进行复制和粘贴。

如何检查字符串是否为有效的UTF-8?

html javascript utf-8

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

使用伪造的S3Event测试我的AWS Lambda函数

我正在为从S3触发,获取一些文件数据并将其放入另一个S3存储桶的AWS Lambda实现Java 8程序包。

这是我目前的情况Handler

public class Handler implements RequestHandler<S3Event, Void> {
    private static final String TARGET_BUCKET = "some-bucket";

    private AmazonS3Client s3Client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());
    private Runner runner = new Runner(s3Client, TARGET_BUCKET);

    @Override
    public Void handleRequest(S3Event s3Event, Context context) {
        runner.run(s3Event, context);

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我将业务逻辑移到了我的Runner课堂上,以便可以正确地对其进行测试(遵循AWS Lambda最佳实践白皮书)。

但是,我正在努力查看如何通过伪造品S3Event来测试我的run功能。

我目前的测试是:

@Test
public void putsDataIntoS3() throws IOException {
    runner.run(new ObjectMapper().readValue(loadJsonFromFile("s3-event.json"), S3Event.class), context);

    assertTrue(true);
}
Run Code Online (Sandbox Code Playgroud)

在哪里loadJsonFromFile获取带有我传递的文件名的资源,将其转换为输入流,然后转换为String

但是,这会导致错误:

com.fasterxml.jackson.databind.JsonMappingException: …
Run Code Online (Sandbox Code Playgroud)

java amazon-web-services aws-lambda

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