はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Xamarin.Androidで必要なXamarin.Android.Supportライブラリが大幅に少なくなった件

事の発端は、Xamarin.Forms 4.4だったXamarin.AndroidなプロジェクトをXamarin.Forms 4.6に上げたときにエラーが発生したことでした。

なお、Xamarin.iOSなプロジェクトはすんなりとXamarin.Forms 4.6にビルドエラーなく移行できておりましたので、本当になぞで2日ほど(途中、ACE COMBAT 7やWorld of Warshipなどをやりながら)かかりっきりでした。

そもそもとして、Xamarin.Forms 4.4まではTargetFrameworkとしてAndroid 8.1が指定できましたが、Xamarin.Forms 4.5以降ではTargetFrameworkの最小値がAndroid 9.0に変更になっていたため、もろもろの関係でしばらく上げられずにいたのですが、準備が整ったのでXamarin.Forms 4.6にnugetでさっと上げてみたのです。

するのなんということでしょう。さらに多くのライブラリを入れる必要を示唆されるではありませんか。

f:id:hatsune_a:20200531183731p:plain

でも必要だっていうのだから仕方がありませんね。[OK]を押して追加しましょう。

GItの機能を使って修正前の状態に何度も戻しながら試しました。

しかし。

クリーンしてからリビルドしてもビル度エラーは取れません。

Visual Studioを終了して、プロジェクト配下のbinフォルダとobjフォルダを削除してプロジェクトを再度開いてビルドしてもビル度エラーは取れません。

これは、TargetFrameworkをAndroid 9.0(ビルドエラー調査の途中で4.4のまま9.0にする分にはビルドエラーにならないことは発見)にするだけで、Xamarin.Formsは一生4.4で生きていくしかないのかとあきらめかけました。

しかしそんなとき、滝沢先生の「お前ら4.4か!4.4な人間なのか!いつ何をやるのもいい加減にして、一生4.4のまんま終わるのか!それでいいのか!お前らそれでも男か!悔しくないのか!」と叱咤される声が脳裏に響きました。

「くやしいです!」「よーし!何がんでも4.6にしてやるぞ!」「でもどうしたらいいだ」

そうだ、初心だ!。私たちにはVisual Studioの新規プロジェクト作成のテンプレートがあるじゃないか!

しかし、ここで問題が発生しました。Xamarin.Formsプロジェクトは共有プロジェクトとしてXamarin.iOSプロジェクトとXamarin.Androidプロジェクトから共有したかったのですが、Visual Studio 2019の新規プロジェクト作成では、以前はあったPCLプロジェクトか共有プロジェクトかの選択チェックボックスがありません。

f:id:hatsune_a:20200531191141p:plain

しかたがなしにこのまま進めると、Xamarin.Forms部分はPCLではなく.NET Standard 2.0プロジェクトとしてソリューションが作られます。

しかし、希望もありました。明らかにXamarin.Android.Support関連のライブラリが少ないのです。でも、油断は禁物です。もしかしたら、共有プロジェクトではないからそうなっているのかもしれません。

Xamarin.Formsなテンプレートではなく、Xamarin.Androidなテンプレートで作成し、後から共有プロジェクトとしてXamarin.Formsプロジェクトを確認してみましょう。

するとどうでしょう。あれだけあったXamarin.Android.Support関係のライブラリがたった2つだけになってしまったではありませんか。

Xamarin.Formsをいれても、たったの3つ。

最初、Xamarin.Forms 4.6に上げたときに要求された追加のライブラリも必要ありません。 

f:id:hatsune_a:20200531184442p:plain

もちろん、デザインによっては追加でnugetするものも増えるかもしれません。

しかし、Xamarin.Formsを使ってそれなりのデザインを作っていた元のソリューションに移植してみて実機動作を確認してみても、この3つだけで、きちんと実機で動作確認ができました。

意図せずnugetで取得必要なライブラリの整理もできて(つまり実行モジュールサイズが小さくなって)無事に意図したXamarin.Forms 4.6化も完了しました。

やはり、時々はミニマムサンプルで最新のお作法を振り返ってみる必要がありますね。

 

追記:

なお、重要なのは新しく作ったXamarin.Androidプロジェクトのcsprojファイルの内容を使うことになります。つまり、(既存と同名で別フォルダに)新しいXamarin.Androidプロジェクトを作成して、既存のXamarin.Androidプロジェクトから要素をコピーして新しい状態をつくり保存したら、csprojファイルを既存のプロジェクトフォルダの方の同名ファイルに上書き保存することです。

 

 

 

NVIDIA RTX Voiceで再生動画からノイズを消す方法

GPUを使って、Windowsの再生デバイスからの出力や、録音デバイスからの出力からノイズを除去してくれるNVIDIA RTX Voiceはとても優秀です。

GeForce RTXQuadro RTXシリーズを搭載したビデオカードが必要ですが、それ以外のGPUでも動作します。実際、このブログを書くにあたって試した環境は、「GeForce GTX 970」な環境でした。

導入時のTIPSなどは↓のブログが詳しいです。 

forest.watch.impress.co.jp

 

さて、ノイズリダクションといえばマイク(録音デバイス)に適用して、例えば、ZoomやTeamsなどのWEB会議でクリアな声を届けたり、音声認識の認識率向上に寄与するような利用シーンが多いかもしれません。

 

しかし、NVIDIA RTX Voiceは再生デバイスにも適用できますので、例えば、ノイズの多い動画を再生するときにクリア化が可能です。

f:id:hatsune_a:20200528230732p:plain

NVIDIA RTX Voiceの画面でスピーカーに対して「Remove background nose from incoming audio」をチェックします。そして、Windowsサウンドの出力に「Speakers (NVIDIA RTX Voice)」を指定します。

f:id:hatsune_a:20200528230755p:plain

 

これで、スピーカーの音からノイズが消え去ります。

最初に紹介したブログには、意図的にノイズを入れた映像もありますので、上記の設定をしてから動画再生すると動画の中で「ノイズがあります!」と言っているところからもノイズが消えていることがわかります。

 

ぜひ、お試しあれ。

Azure Kinectを使ったHoloSessionについて

Microsoft Build 2020の残り8時間をきりましたね。楽しんでいますか?

さてさて、合間合間にも素敵なコンテンツが流れてくるのがBuild 2020クオリティ。

f:id:hatsune_a:20200521162014p:plain

普通のカメラ1台(実際は上のアングルの配信のためだけ)+Azure Kinect x 2台で↓こんな配信になります

f:id:hatsune_a:20200521162142p:plain

1枚目の写真でAzure Kinectと一緒に写り込んでいる照明がきっと大切。

Everything you need to know about WinUI

Microsoft Build 2020からの引用

https://mybuild.microsoft.com/sessions/7d5b56db-d367-43ac-9163-44de4e3919e8

 

UX Frameworkの統一化を進めているMicrosoftですが、現行のWin UI 2の次のWin UI 3では、MFC、WinForms、WPF、UWP XAMLから共通に使えるようになるようです。

f:id:hatsune_a:20200520225426p:plain

動作フレームワーク的にはDesktopとUWPなので、恩恵をうけそうな感じとしては、WPFにUWP XAMLライクなFluentデザインのコントロールとか使えるようになったらいいかなー。

 

ロードマップは次のような感じだそうです。

f:id:hatsune_a:20200520225700p:plain

本番システムに使っていいよという「go live」には2020年10月、Ignite 2020あたりを目標にしていた感じですね。

Ignite 2020もBuild 2020と同様にオンラインイベントのようですから、「さあ!そろそろ使おうか!」的な目線でセッションを受講出来たらよさそうです。

そして、来年の3月にはGAですね。来年のMicrosoft MVP Global Summitはどうかなー。現地開催できるような情勢だといいですね。

 

さて、みんな大好きuno platformもWinUI 3.0をサポートするそうです。

platform.uno

ということは、Desktop AppsとUWP Appsに加えて、Xamarin AppsもWin UIでUXプラットフォーム部分は共通化できそうですね。

https://s3.amazonaws.com/uno-website-assets/wp-content/uploads/2020/05/19120251/howitworks_new.png

 

 

WinUI 3.0ですがPreview 1はもう使えます。10月までの半年しかないですから、始めるには早すぎるってことはなさそうですよね。

microsoft.github.io

「英語」音声認識で都道府県わかるかな?

「英語」音声認識都道府県わかるかな?

英語ネイティブ発音じゃなくて、日本人の日本語発音で英語音声認識がどう認識するかを知ることは、私たちの日本語が英語圏の人たちにはどう聴こえるかを知る目安になります。
そこで、Azure Cognitive Servicesの「英語」音声認識都道府県わかるかな?をやってみたいと思います。

北海道 Hokkaido
青森 all Moody.
岩手 You out there?
宮城 Yeah.
秋田 Oct.
山形 Yamagata
福島 Fukushima
茨木 Ibaraki.
栃木 put it.
群馬 Goomba.
埼玉 sitamma.
千葉 T bar
東京 Tokyo.
神奈川 Kanagawa
新潟 Niigata
富山 Toy, Yama.
石川 Is covered.
福井 Quit.
山梨 Yeah, minus.
永野 Nagano
岐阜 he who?
静岡 She's OK.
愛知 Heights.
三重 Mia
滋賀 cigar.
京都 Kyoto
大阪 Osaka
兵庫 Hugel
奈良 Nara
和歌山 What I am.
鳥取 Put buddy.
島根 She money.
岡山 Oklahoma.
広島 Hiro Shima.
山口 Yamaguchi
徳島 Takashima,
香川 Cagua
愛媛 Hmm.
高知 Coach
福岡 Coca.
佐賀 Saga
長崎 Nagasaki.
熊本 Komodo.
大分 Order
宮崎 Music.
鹿児島 Cosima
沖縄 Okinawa.

意外ときちんと認識しているところ、確かにそう聴こえるところ、謎なところとありますね。
謎なところは、多分、私の発音がそもそも悪いというのもあるのかも。

でも、海外で「静岡」って言えば、「She's OK?」って聞こえるのは重宝しそうですね。
ということで、みなさんもためしてみてね。

New Cognitive Services capabilities are now generally available

Microsoft Build 2020のオンラインイベントが本日0時からスタートしました。

それに伴って、Cognitive ServicesもいろいろGA (generally available) がありますね。

音声認識関連をピックアップしてみましょう。

azure.microsoft.com

Quickly transcribe audio to text. Speech to Text is expanding to 27 new locales (coming soon), with 30 percent improvement in speech transcription accuracy.

音声テキスト変換の速度向上、27の新しい地域(これからのも含め)の追加、音声認識精度が30%向上などだそうです。

音声認識の対応地域って、この前まで30地域(言語的には21言語)だったと思うので、一気に倍近くになったのかな?

早速、ドキュメントをみてみましょう。

docs.microsoft.com

ドキュメントの更新日付見ると3月なんで、まだ、今回の発表分は反映されてないのかな?

ロケール一覧を抜き出してみると下記の様になります。

Locale Language  
ar-AE アラビア語 (UAE) [2019/10/22追加]
ar-BH アラビア語 (バーレーン) [2019/10/22追加]
ar-EG アラビア語 (エジプト)  
ar-KW アラビア語 (クウェート) [2019/10/22追加]
ar-QA アラビア語 (カタール) [2019/10/22追加]
ar-SA アラビア語 (サウジアラビア) [2019/10/22追加]
ar-SY アラビア語 (シリア) [2020/03/26追加]
ca-ES カタロニア語  
da-DK デンマーク語 (デンマーク)  
de-DE ドイツ語 (ドイツ)  
en-AU 英語 (オーストラリア)  
en-CA 英語 (カナダ)  
en-GB 英語 (イギリス)  
en-IN 英語 (インド)  
en-NZ 英語 (ニュージーランド)  
en-US 英語 (米国)  
es-ES スペイン語 (スペイン)  
es-MX スペイン語 (メキシコ)  
fi-FI フィンランド語 (フィンランド)  
fr-CA フランス語 (カナダ)  
fr-FR フランス語 (フランス)  
gu-IN グジャラート語 (インド) [2019/10/22追加]
hi-IN ヒンディー語 (インド)  
it-IT イタリア語 (イタリア)  
ja-JP 日本語 (日本)  
ko-KR 韓国語 (韓国)  
mr-IN マラーティー語 (インド) [2019/10/22追加]
nb-NO ノルウェー語 (ノルウェー)  
nl-NL オランダ語 (オランダ)  
pl-PL ポーランド語 (ポーランド)  
pt-BR ポルトガル語 (ブラジル)  
pt-PT ポルトガル語 (ポルトガル)  
ru-RU ロシア語 (ロシア)  
sv-SE スウェーデン語 (スウェーデン)  
ta-IN タミール語 (インド) [2019/10/22追加]
te-IN テルグ語 (インド) [2019/10/22追加]
th-TH タイ語 (タイ)  
tr-TR トルコ語 (トルコ) [2019/10/22追加]
zh-CN 中国語 (簡体字)  
zh-HK 中国語 (繁体字)  
zh-TW 中国語 (台湾)  

docsの変更履歴を見ても、2019/10/22にアラビア語ロケール増加、インドの言語の増加、トルコ語の追加があり、2020/3/26にアラビア語(シリア)が追加されていますが、まだ、今回のGAのが追加されてはいないのかな?

30地域(言語的には21言語)と思っていたけれど、現時点で、41地域(言語的には26言語)でした。そういえば、アラビア語は、ar-EGがMSA=Modan Standard Arabicだったのですが、2019/10/22の追加で、ar-BHの方に移ったみたいですね。

本日(2020/05/20)にアナウンスのあった27地域がどこなのか、どこが増えるのか楽しみですね。

 

Humans of IT Blogに寄稿しました

techcommunity.microsoft.com

Microsoftが最近取り組んでいるHumans of ITのブログにブログ記事を寄稿しました。

他のゲストブログの方が、困っている当事者である開発者がITで問題解決する内容なのでちょっとだけ異色かもしれませんが、音声認識アクセシビリティをブーストするよという取り組みの紹介となります。

お時間のある時にご一読いただけると幸いです。