2017-12-19 9 views
0

私はMicrosoft Bot Frameworkで作成されたボットを持っており、Skypeをチャンネルとして使用しています。ユーザーがモバイルアプリ(AndroidまたはiOS)のいずれかを使用して音声を送信してボットと話そうとすると、添付ファイルからオーディオを取得してBing Speech APIに送信して、それをテキスト。ボットフレームワークを使用しているときにBing Speech APIでSkypeオーディオ添付ファイルを使用するにはどうすればよいですか?

私はこれをやっているいくつかの問題を抱えています。私が信じる主な問題は、実際にはI have to send a WAVがBing Speech APIです。私は、ボットBuilderリポジトリでデモを読み、デモに次のコードがあります:私はSkypeのモバイルアプリ経由の音声を送信するとき、私は持っていません(私は、Androidでテストしています)しかし

var audioAttachment = activity.Attachments?.FirstOrDefault(a => a.ContentType.Equals("audio/wav")); 
if (audioAttachment != null) 
{ 
    using (var client = new HttpClient()) 
    { 
     var stream = await client.GetStreamAsync(audioAttachment.ContentUrl); 
     var text = await this.speechService.GetTextFromAudioAsync(stream); 
     message = ProcessText(activity.Text, text); 
    } 
} 

"audio/wav"ファイルタイプの場合、ファイルタイプ(ContentType)はちょうど "オーディオ"となります。

Postman(URLは次のようになります:https://smba.trafficmanager.net/apis/v3/attachments/0-eus-d1-0000000000000/views/original)を使用してボットステートマネージャーAPIでオーディオファイルを取得しようとすると、コンテンツタイプが「application/octet-stream」になってしまいます。 MP3、WAV、または何でも。

私はポストマンの内部を見ることができますわずか数行はちょうどこのようなものです:

ftypmp42isommp42pmoovlmvhd_ _ @ymeta hdlrmdta + keysmdtacom.android.version%ilstdata7.1.1trak! \ tkhd_ _ @mdia mdhd_ _ D、hdlrsounSoundHandleminfsmhd $ dinfdrefurl STBL [stsdKmp4aD'esds @ ww0stts-stsz

I ReadAsStreamAsyncメソッドを使用してこのコンテンツをストリームにダウンロードし、この文字列を次のエンドポイントのBing Speech APIに渡します。

https://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?language=pt-BR&format=detailed

しかし、これは私が戻って得るものです:

{ "RecognitionStatus": "InitialSilenceTimeout"、 "オフセット":11000000、 "期間":0}

この場合、それは可聴音声であり、音声を検出しません。私が言ったように、私は問題がファイルタイプだと思う。 Skypeが使用するファイルタイプは何ですか?このファイルを使用してBing Speech APIを呼び出すにはどうすればよいですか?

答えて

0

Skypeが使用するファイルタイプは何ですか?このファイルを使用してBing Speech APIを呼び出すにはどうすればよいですか?

問題はファイルタイプです。 Bing Speech Apiは現在WAV/PCM形式のみをサポートしています。オーディオファイルがこの形式でない場合は、PCMに変換する必要があります。

ユーザーの添付ファイルがオーディオファイルであるかどうかを検出したい場合は、たとえば次のようにコードを変更することができます。

var audioAttachment = activity.Attachments?.FirstOrDefault(a => a.ContentType.Contains("audio")); 

その後、本当の問題は、今の.wavオーディオに変換することです。 C#の場合、NAudioパッケージを試してみてください。

関連する問題